注释

注释不会被执行,是写给看代码的人看的。

三种注释单行注释

多行注释

文档注释

标识符关键字

Java常见的关键字

考点

总结四个点:

  1. 首字母应该以字母、$、_开始;

  2. 开始后可以任意字符;

  3. 不可用关键字

  4. 大小写敏感

数据类型Java是一门强类型语言

强类型语言

比如Java、C++、C

变量定义严格,先定义才能使用。

弱类型语言

比如VB、JS、Python

Java的两大类数据类型基本类型

Java语言提供了八种基本类型:

  • 四个整数型;

  • 两个浮点型;

  • 一种字符型;

  • 布尔

数值类型

整数类型

  • byte占1个字节

    • -128(-2^7)

    • 127(2^7-1)

  • short占2个字节

    • -32768(-2^15)

    • 32767(2^15 – 1)

  • int(整型)占4个字节

    • -2,147,483,648(-2^31)

    • 2,147,483,647(2^31 – 1)

  • long(长整型)占8个字节。

    • -9,223,372,036,854,775,808(-2^63)

    • 9,223,372,036,854,775,807(2^63 -1)

浮点数类型

  • float(单精度)占4个字节

    • 储存大型浮点数可节省空间。

  • double(双精度)占8个字节

    • 默认类型

字符类型

  • char(字符型)占2个字节

  • String(字符串)他不是一个关键字,是一个类

布尔类型

  • boolean(布尔类型)

    • 只能存储true和false。

引用类型

除了基本类型之外的所有数据类型,都是引用类型。

类;接口;数组。(后续专栏讲解)

拓展整数进制

常规使用的基本数据类型为10进制:

而Java程序中,可以对变量赋值为各种进制。

//默认十进制,二进制为0b,八进制为0,十六进制为0x
public class binary {
public static void main(String[] args) {
int i=10;
int i2=010;
int i3=0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
}
}

输出结果为:

浮点数特性

由于浮点数具备以下特征:

  1. 有限性;

  2. 离散性;

  3. 舍入误差;

  4. 大约;

  5. 接近但不等于。

所以我们在实际使用中,要尽量避免使用浮点数进行数值之间的比较。

案例1:两个相同的数值进行比较得false

代码如下:

float f=0.1f;
double d=1.0/10;
System.out.println(f==d);

输出结果得:

使用调试查询变量数值:

两个数值都相同,但输出结果为false。

案例2:过长数值+1,依然等于原数值

代码如下:

float d1=213213213213213213f;
float d2=d1+1;
System.out.println(d1==d2);

输出结果为:

使用调试查询变量数值:

可以看见,浮点数值一但过大,则会直接修改表示形式,就无法对比数值大小了。

解决方案(BigDecimal)

如果涉及浮点数比较大小,最好使用 数据类 BigDecimal 数学工具类。

字符拓展字符

所有的字符,本身都是Unicode、ASCII码

Unicode(0~65536,2^16)

代码如下:

char a='a';
char A='A';
char B='B';
System.out.println("a="+(int)a);
System.out.println("A="+(int)A);
System.out.println("B="+(int)B);

运行结果如下:

转义字符

除此之外,字符还具备转义字符的含义,一般可用在如下场景:

  1. 需要插入一些关键性的文字;

  2. 需要插入一些空格、回车,等特别的字符。

代码如下:

System.out.println("中间是空格转义符→\t←");

输出结果:

类型转换

Java运算中,不同类型的数据先转化为同一类型,然后再进行运算。

数据类型优先级

强制类型转换

代码如下:

public class type_Convert {
public static void main(String[] args) {
int i=128;
byte b= (byte) i;//因为最大值是127,当128的时候就是补码
System.out.println(i+"\n"+b);
}
}

输出结果如下:

加个括号的形式,就是强制转换,从数据类型的高到低,就需要强制转换。

反之,从低到高就采用自动转换。

自动类型转换

代码如下:

int o=123;
double j=o;

扩展补充

  1. 不能对布尔类型进行转换。

  2. 不能把对象类型转换为不相干的类型。

  3. 在把高容量转换到低容量的时候,强制转换。

  4. 转换的时候可能存在内存溢出和精度问题,转换后会除去掉小数部分。

  5. JDK7 的新特性,数字之间支持用下划线分割。

int q=10_0000_0000;
System.out.println(q);

输出结果:

1000000000

变量

定义:可变化的量

  • 每个变量都必须声明其类型;

  • 是最基本的存储单元,其要素包含变量名、变量类型和作用域

变量定义:

int i = 1;
String i = 2;
//int、String 变量类型
// i 就是变量名称

作用域类变量:

  • 从属与类,可以直接使用类名调用的变量

  • 作用范围全局

public class action_Scope {
//类变量:从属与类,可以直接使用类名调用的变量。
static double salasy;
public static void main(String[] args) {
//类变量的调用
action_Scope.salasy=200D;
System.out.println(action_Scope.salasy);
}
}

输出结果:

200.0

实例变量

  • 从属与对象:如果不自行初始化,这个变量则自动唯默认值 0 0.0

    • 布尔变量为true,除了基本类型,其他的引用类型都是null

  • 作用范围,new 实例。

public class action_Scope {
//实例变量:从属与对象:如果不自行初始化,这个变量则自动唯默认值 0 0.0
//布尔变量为true,除了基本类型,其他的引用类型都是null
String name;
int age;
public static void main(String[] args) {
//实例变量的调用
action_Scope action_scope=new action_Scope();
System.out.println(action_scope.age);
}
}

输出结果:

0
null

局部变量

  • 作用范围,方法内部

public class action_Scope {
public static void main(String[] args) {
//局部变量:必须声明和初始化数值
int i = 10;
System.out.println(i);
}
}

输出结果:

10

常量

一但定义了,就不会变化的量。

public class Demo1 {
//修饰符不区分先后顺序。
final static double PI=3.14;
static final double π=3.14;
}

命名规范

  • 所有变量、方法、类名:见名知意;

  • 变量、方法:首字母小写和驼峰原则:mounthSalary

    • 除了第一个单词,后面的单词首字母大写

  • 常量:全大写字母,多个单词使用下划线隔开。

    • MAX_VALUE

  • 类名:首字母大写,驼峰原则

运算符

  • 自增、自减,也可以叫做一元运算符

  • a++和++a的区别在于,先执行再++和先++再执行

  • 很多运算我们会使用Math工具类进行操作

短路运算

  • 当与预算时,如果前者为假,就不会继续向后执行代码了

  • 或运算时,如果前者为真,则不会继续执行后面的代码

位运算

位运算就是将变量与变量用二进制的形式进行 与或非 的计算,一般计算IP地址和子网掩码可用使用位运算

面试题:2乘以8怎么运算最快?

利用位运算符,可以根据变量的二进制数值进行移动

优点是运算效率极高(直接是底层机器语言)。

三元运算符

代码:

int en= a<10?20:30;
System.out.println("三元运算符:"+en);

输出:

三元运算符:30

字符串连接符

问:以下两种代码写注方式,有什么区别?

int a=10;
int b=20;
System.out.println(""+a+b);
System.out.println(a+b+"");

输出:

1020
30

答:当一串运算语句中,出现String类型,之后的所有+号,都会被认为是字符串连接符。

优先级

优先计算括号。

包机制

包的本质就是一个文件夹。

包的结构必然是和网址相反的。

JavaDoc

用于生成API文档,开发时极其有用。

可以通过doc命令行,在当下目录,输入代码:

javadoc -encoding UTF-8 -charset UTF-8 [.java文件的路径]

快速生成相关的Java文档。

### 部分截图取自,B站UP:遇见狂神说;菜鸟教程