一、数据类型
1.1、强类型语言
要求变量的使用必须严格符合规定,所有变量度必须先定义后才能使用。
1.2、弱类型语言
1.3、java的数据类型分为两大类
1.3.1. 基本数据类型
生活中常用数据类型就是java基本数据类型,比如数字(整数和小数)、文字、是非对错。如下图:
//八大基本类型
//整型
byte num1 = 10;
int num2 = 20;
short num3 = 30;
long num4 = 30L; //long类型要在数字后面加L
//小数:浮点数
float num5 = 50.1F; //float类型要在数字后面加F
double num6 = 3.4345345435435435;
//字符
char name = '梁';
//字符串,String不是关键字,是一个类
//布尔值:是非
boolean flag = true;
上图代码比如byte,int,short如果输入过长位数,超过该类型的范围就会报错,因为每种类型有固定长度范围。
1.3.2. 引用数据类型
从1.3.1图片看出,处理数值、字符、是非类型,其他都是引用类型。
上图数据类型范围不用刻意记,直接查询对象刻意看到,如下图Byte:
1.4、数据类型扩展
1.4.1、整数扩展
//整数扩展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i1 = 10; //十进制
int i2 = 010; //八进制
int i3 = 0x10; //十六进制0x 0-9 A-F(10-16)
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
上面代码输出结果位:
i1为十进制输出10,i2为八进制逢8进1,所以输出8,i3为十六进制逢16进1所以为16,如果i3=0x10那输出应该为17。
1.4.2、浮点数扩展
问题:银行业务的数字怎么表示?
浮点数比较问题:
//浮点数扩展 银行业务的数字怎么表示
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f == d); //false
结果:false
float f1 = 233242342343243f;
float f2 = f1 + 1;
System.out.println(f1 == f2);
结果:true
会出现上面两个奇怪的结果是应为浮点数是有限的、离散的、会有舍入误差、接近不等于的特性,所以在数值比较时最好完全避免用浮点数进行比较,如果要比较用BigDecimal类比较。
二、类型转换
由于Java是强类型语音,所以要进行有些运算的时候,需要用到类型转换。运算中,不同类型的数据先转换成同一种类型,然后再进行运算。
转换按容量从低到高:
低--------------------------------------------------------------------------->高
byte,short,char->int->long->float->double
2.1、自动类型转换
数据类型容量从低到高就会自动类型转换,比如:
int i = 128;
double b = i;
System.out.println(i);
System.out.println(b);
``
结果:
128
128.0
# 2.2、强制类型转换
数据类型容量从高到低,需要强制类型转换:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210310234456487.png)从int转换到byte自动转换报错了,需要强制类型转换:
```java
int i2 = 128;
byte b2 = (byte) i; //从高强制转换到低,容易发生内存溢出
System.out.println(i2);
System.out.println(b2);
System.out.pringln((int)23.7);//float强制转换int,从高转换到低容易发生精度不准问题
结果:
128
-128
23
从结果看b2=-128,因为byte最大为127,强加赋值128发生了内存溢出,所以从高容量强制转换到低容量,可能存在内存溢出或者精度问题。
三、变量、常量、作用域
3.1、变量
变量按字面理解就是可以变化的量,是程序中基本的存储单元,其要素包括变量名、变量类型和作用域。Java是一种强类型语言,每个变量都必须声明其类型(可以是基本类型,也可以是引用类型)。
type varName [=value],[{,varName=[=value]}];
//数据类型 变量名 = 变量值; 可以是用逗号隔开来声明多个同类型变量,但是一般不建议这样做,程序可读性不好
方法里面的变量定义要初始化才能使用,如下图:
3.2、变量作用域
*局部变量:在方法体或代码块内定义的变量
*实例变量(成员变量):在方法体外面定义的类成员变量
*类变量:类里面用static修饰的类成员变量
3.1、常量
常量是一种特殊的变量,用final修饰,初始化后不能再改变,一般用大写字符命名。
final 常量名 = 值;
final int AGE = 34;
四、javadoc生成API文档
使用命令行生成文档命令:javadoc -encoding UTF-8 -charset UTF-8 Demo4.java,如下图:
执行完成后在Demo04.java所在文件夹多了好多文件,如下图:
打开index.html首页,生成了很详细的文档: