前言
How to study?
- 需求
- 工作需要
- 跳槽,对方需要
- 技术控
- 看看传统技术能否解决
- 能解决,不完美
- 解决不了
- 问清楚新技术到底有什么优异
- 引出我们学习的新技术和知识点
- 学习新技术或者知识点的基本原理和基本语法(先不要考虑细节)
- 快速入门(基本程序,curd)
- 开始研究技术的注意事项,使用细节,使用规范,如何优化(人话:推倒重来)
JAVA诞生故事
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0G1gJPU5-1678672773976)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712172429817.png)]
- 震惊世界的功能:在网页上加载动态的图片
- LTS版本:long term support,长期支持版
- 目前最广泛使用JAVA8、JAVA11
JAVA技术平台体系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aaPqzpC3-1678672773978)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712172924460.png)]
JAVA重要特点
-
JAVA语言是面向对象的(oop)
-
JAVA语言是见状的。JAVA的强类型机制、异常处理、垃圾的自动手机是JAVA程序健壮性的重要保证
-
JAVA是跨平台性质的。【.class文件通过解释器可在多个系统下运行】
-
JAVA语言是解释型的[了解]
解释性语言:JavaScript,PHP,Java
编译型语言:c、c++
区别:解释性语言,编译后的代码不能被机器直接执行,需要解释器来执行,编译型语言,编译后的代码已经是二进制码可以直接被机器直接运行
JAVA运行概述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HNPNHfBw-1678672773979)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712174645511.png)]
JVM:Java虚拟机,实现在不同系统解释统一代码
JAAVA运行机制以及运行过程
- JAVA核心机制-JAVA虚拟机[JVM java virtual machine]
- 基本介绍
- JVM是一个虚拟计算器,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK中
- 对于不同平台,有不同的虚拟机
- JAVA虚拟机机制屏蔽了底层运行平台的差别,实现了”一次编译,到处运行“(hhh还没有解释)
JDK基本介绍
- JDK全称:JAVA Development Kit [java开发工具包]
- JDK = JRE + java的开发工具[java,javac,javadoc,javap等]
JRE基本介绍
-
JRE(JAVA Runtime Envirnment JAVA运行环境)
JRE = JVM + JAVA的核心类库【类】
-
包括Java虚拟机和JAVA程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可
执行流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HUhn2VCT-1678672773980)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193421703.png)]
什么是编译
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fAhqugD5-1678672773982)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193511933.png)]
什么是运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ct08jOP-1678672773983)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193641270.png)]
JAVA开发注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7MA3Z3S6-1678672773985)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193746905.png)]
8.Public类的名称需要与源文件名称相同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMu97UHe-1678672773986)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712194121604.png)]
每一个类编译后,都对应一个.class(JVM是加载机制,加载每个类)
安装JAVA
配置环境变量PATH
- 进入环境变量
- 增加JAVA_HOME环境变量,只想jdk安装目录d:\xxxx
- 编辑path环境变量,增加%JAVA_HOME%\bin
- 打开DOS命令行,任意目录下敲入javac/java,javadoc。如果出现java的参数则配置成功
Javadoc注释
一.Java注释方式
Java 支持三种注释方式。分别是
-
单号注释 //
-
多行注释 /* */
-
文档注释,它以 /** 开始,以 */结束。
可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中。
二.JavaDoc注释用法
在开始的 /**
之后,第一行或几行是关于类、变量和方法的主要描述
。之后,你可以包含一个或多个各种各样的 @ 标签
。每一个 @ 标签必须在一个新行的开始或者在一行的开始紧跟星号(*).
- 多个相同类型的标签应该放成一组。例如,如果你有三个 @see 标签,可以将它们一个接一个的放在一起。
下面是一个类的说明注释的实例:
/*** 这个类绘制一个条形图
* @author runoob
* @version 1.2
*/
三.JavaDoc注释会输出什么
javadoc 工具将你 Java 程序的源代码作为输入,输出一些包含你程序注释的HTML文件。
每一个类的信息将在独自的HTML文件里。javadoc 也可以输出继承的树形结构和索引。
由于 javadoc 的实现不同,工作也可能不同,你需要检查你的 Java 开发系统的版本等细节,选择合适的 Javadoc 版本。
四.JavaDoc注释常用标签
1.@see
- 使用@see时应注意 写在每行注释的开头。
- 用法:@see 类#属性 / 方法
四.JavaDoc注释常用标签
1.@see
使用@see时应注意 写在每行注释的开头。
用法:@see 类#属性 / 方法
JavaDoc注解中的{@link}与@see
,他可以链接类或者方法,方便自己或别人看的时候,可以直接找到你关联的代码类或者啥的。
在编辑器中,按住ctrl+鼠标左键
,就能直接跳转
2.{@link}
- {@link}的使用与@see有一点区别就是可以写在注释的任意位置
- 用法:{@link 类#属性 / 方法}
/**
* {@link ClassA#属性}
* {@link ClassA#方法}
* {@link com.joh.demo.ClassB#方法}
*
* 可不用开头写 {@link ClassA#属性}
* 可不用开头写 {@link ClassA#方法}
* 可不用开头写 {@link com.joh.demo.ClassB#方法}
*/
JavaDoc注解中的{@link}与@see
,他可以链接类或者方法,方便自己或别人看的时候,可以直接找到你关联的代码类或者啥的。
在编辑器中,按住ctrl+鼠标左键
,就能直接跳转
3.其他JavaDoc标签
标签 |
描述 |
示例 |
@author |
标识一个类的作者 |
@author description |
@deprecated |
指名一个过期的类或成员 |
@deprecated description |
{@docRoot} |
指明当前文档根目录的路径 |
Directory Path |
@exception |
标志一个类抛出的异常 |
@exception exception-name explanation |
{@inheritDoc} |
从直接父类继承的注释 |
Inherits a comment from the immediate surperclass. |
{@link} |
插入一个到另一个方法或者代码的链接,但是该链接显示链接样式 |
Inserts an in-line link to another topic. |
{@linkplain} |
插入一个到另一个方法或者代码的链接,但是该链接显示纯文本字体 |
Inserts an in-line link to another topic. |
@param |
说明一个方法的参数 |
@param parameter-name explanation |
@return |
说明返回值类型 |
@return explanation |
@serial |
说明一个序列化属性 |
@serial description |
@serialData |
说明通过writeObject( ) 和 writeExternal( )方法写的数据 |
@serialData description |
@serialField |
说明一个ObjectStreamField组件 |
@serialField name type description |
@throws |
和 @exception标签一样.,说明要抛出的异常 |
@throws tag has the same meaning as the @exception tag. |
{@value} |
显示常量的值,该常量必须是static属性。 |
Displays the value of a constant, which must be a static field. |
@version |
指定类的版本 |
@version info |
五.更多详细
(29条消息) 【Java基础】JavaDoc注释标签大全_墩墩分墩的博客-CSDN博客_java注释标签
Java代码规范
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNjavjSM-1678672773988)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712235502004.png)]
JAVA API文档
-
API(Application Programming Interface,应用程序编程接口)是JAVA提供的基本编程接口(java提供的类还有相关方法)。
中文在线文档:https://www.matools.com
-
Java语言提供了大量基础类,因此Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类李包含的方法。
-
Java类的组织形式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JTic2UV9-1678672773989)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713141610471.png)]
-
举例说明如何使用ArrayList类有哪些方法
- 找方法:包 -> 类 -> 方法(如math)
- 通过索引找(math)
标识符命名规则和规范
规则:必须要做
规范:最好这样做
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h59lHSlo-1678672773990)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220715200504867.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5C8uDAN-1678672773991)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220715200807421.png)]
基础
HelloWorld,JAVA
//1.public class hello表示hello是一个类,是一个public公有的类
//2.hello{ }表示一个类的开始和结束
//3.public static void main(string[]args)表示一个主方法,即程序入口
public class Hello {
//编写一个主方法
public static void main(String[] args){
System.out.println("hello,world_JAVA");
}
}
转义字符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PgskIzwi-1678672773993)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712200215383.png)]
public class ChangeChar{
public static void main(String[] args){
System.out.println("北京\t上海\t换行\n 符号\\ 一个\" 一个\' 回车\r回车完毕");
//解读
//1.输出 回车
//2.\r表示回车
//3.将后面的字符一个个替换成前面的字符
}
}
class Homework{
public static void main(String[] args){
System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t1000");
}
}
”+“号运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S74iIkO6-1678672773994)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713113144123.png)]
JAVA数据类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dhn7Modn-1678672773995)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713113427422.png)]
整数类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ddNvjOh0-1678672773996)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713114432925.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t99WbG11-1678672773997)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713122822166.png)]
浮点类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-abX8fry9-1678672773998)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713140553571.png)]
字符类型
- 使用unicode码进行转义,char占2个字节
- 字符类型“+”号运算不是拼串而是进行加法运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XEu4XD9q-1678672774000)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713151322638.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FPKSrFc1-1678672774001)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713152512264.png)]
布尔类型
细节说明
- 不可以0或非0的整数代替false和true,这点和c语言不同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v8HXGI3U-1678672774002)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713154829300.png)]
基本数据类型的转换
自动类型转换
简介
当java程序在进行赋值或者运算时,精度小的类型回自动转换为精度大的数据类型
这个就是自动类型转换**(注意是精度噢)**
数据类型按精度(容量)大小排序如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCZ5hly3-1678672774003)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713182119602.png)]
例子:
int a='c';//对
double d=80;//对
需要注意的地方:
- 有多种类型的数据混合运算时,系统首先自动将数据转换成容量最大的那种数据类型,然后计算。
- 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
- (byte,short)和char之间不会进行转换。
-
byte,short,char他们三者可以计算,在计算时首先转换为int类型(因此只能用来赋值等)
- boolean不参与转换
- 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
- 整型直接量在没有加后缀的时候默认为int,但是当它被赋值给某个变量(这个变量是short型,int型,byte型中的一种)时,则会自动转化成相对应的类型。
强制类型转换
介绍:
自动类型转换的逆过程,将精度大的数据类型转换为精度小的数据类型。使用时要加上强制转换符(int/byte/float/…),但可能造成精度降低或溢出,格外要注意。
案例演示:
public class ForceConvert {
public static void main(String[] args){
int n1 = (int)1.9;
System.out.println("n1="+n1);//造成精度损失
//输出n1=1
int n2 = 2000;
byte b1 = (byte)n2;
System.out.println("b1="+b1);//造成数据溢出
//输出b1=-48
}
}
需要注意的细节:
-
当进行数据的精度从大—>小,就需要使用强制转换
-
强转换符号只针对最近的操作数有效,玩玩会使用小括号提升优先级
public class ForceConvertDetail {
public static void main(String[] args){
//演示强制类型转换
//强转符号只针对最近的操作数有效,往往回使用小括号提升优先级
// int x = (int)10 * 3.5 + 6 * 1.5;
//double -> int 错误,强制转换()只对10有效
int y = (int)(10 * 3.5 + 6 * 1.5);
//使用小括号提升优先级计算进行强制转换
System.out.println(y);
}
}
-
char类型可以保存int类型的常量值,但不能保存int的变量值,需要强转
char c1=100;//ok
int m=100;//ok
char c2 = m;//false
char c3 = (char)m;//ok
System.out.println(c3);
-
byte和short,char类型在进行运算时,当作int类型处理。
基本数据类型和String类型转换
-
介绍
在程序开发中,我们经常需要将基本数据类型转换成String类型。或者将String类型转换成基本数据类型。
-
基本数据类型转String类型
语法:将基本类型的值+""即可
演示:
-
String类型转基本数据类型
语法:通过基本类型的包装类调用parseXX方法即可
演示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NrbYR63y-1678672774005)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713204437534.png)]
注意:Char转换则使用ch.charAt(0)取出其中一个字符
-
注意事项:
- 在将String类型转换成基本数据类型时,要确保String类型能够转成有效的数据,比如:我们可以把“123”,转成一个整数,但不能把“hello”转换成一个整数
- 如果格式不正确,就会抛出异常,程序就会终止,这个问题在异常处理章节中,会讲解
运算符
介绍
运算符是一种特殊符号,用来表示数据的运算、赋值和比较等…
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 三元运算符
算术运算符
除法
public class ArithmeticOperator {
public static void main(String[] args){
System.out.println(10/4);//从数学角度来讲是2.5,java运算结果是2
System.out.println(10.0/4);//java运算结果是2.5
double d = 10 / 4;//java钟10 / 4 = 2,2=>2.0
System.out.println(d);//结果是2.0
}
}
模运算
%的本质,公式:a % b = a - a / b * b
-10 % 3 = -10 - (-10)/3 * 3 = -10 - (-3) * 3 = -10 + 9 = -1
public class ArithmeticOperator {
public static void main(String[] args){
System.out.println(10 % 3);//1
System.out.println(-10 % 3);//-1
System.out.println(10 % -3);//
}
}
自增自减
作为表达式使用
前++:++i先自增后赋值
后++:i++先赋值后自增
此外还有**等
面试题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PLr328cK-1678672774006)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220715193140160.png)]
//原理如下
int i = 1;
k = i++;
/*
内部规则:
temp = i;
i = i + 1;
k = temp;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)