变量介绍

定义

定义:变量是程序的基本组成单位,变(变化)量(值)

变量有三个基本要素:数据类型 + 变量名称 + 值

变量相当于内存中的一个数据存储空间的表示,可以把变量看作是一个房间的门牌号,通过门牌号我们可以找到房间,即通过变量名访问到变量值。

变量快速入门

1、变量表示内存中的一个存储区域【不同的变量,类型不同,占用的空间大小不同,比如int:4字节,double:8字节】

2、变量相当于内存中一个数据存储空间的表示,该空间有自己的名称[变量名]和类型[数据类型]。

3、变量必须先声明,然后再使用。

4、该空间的 数据\值 可以在同一类型范围内不断变化。

5、变量在同一作用域内不能重名。

6、变量 = 变量名 + 值 + 数据类型。

+号的使用

  • 当左右两边都是数值型的时候,则为加法运算
  • 当左右两边有一方为字符串时,则为拼接运算

总结: 运算顺序为从左到右。

public class Test{
	public static void main(String[] args){
		System.out.println(100 + 98);  //  198
		System.out.println(100 + "98");  //  10098
		System.out.println(100 + 3 + "hello");  // 103hello
		System.out.println("hello" + 100 + 3);  // hello1003
	}
}

数据类型

定义

每一种数据都被定义了明确的数据类型,不同的数据类型在内存中分配了不同大小的内存空间「字节」。

主题数一定要和lda一致性最高值一样吗_java

总结:

1、Java数据类型分为两大数据类型:基本数据类型 和 引用数据类型

2、基本数据类型有8种:

  • 数值型:byte、short、int、 long、float、 double
  • 字符型:char
  • 布尔型: Boolean[true/false]

3、引用类型:类,接口,数组

整数类型

基本介绍

主题数一定要和lda一致性最高值一样吗_System_02

byte n1 = 10;    // 1 字节
short n2 = 10;	// 2 字节
int n3 = 10;  // 4字节
long n4 = 10; // 8字节

以上变量的值虽然相同,但占用空间不同,而且值的取值范围不同

整数类型的使用细节

1、Java各整数类型有固定的范围和字段长度,不受具体操作系统的影响,目的为了保证java程序的可移植性。

2、Java的整型常量默认为 Int 型,声明 long型 常量需在值后面加’l’ 或‘L’

3、Java程序中变量经常默认声明为int类型,除非数据值非常大,超出Int的取值范围,才会考虑使用long。

4、bit: 计算机中的最小存储单位。byte:计算机中基本存储单元。 1 byte = 8bit

浮点类型

基本介绍

主题数一定要和lda一致性最高值一样吗_jvm_03


1、浮点数在机器中的存放形式为:浮点数 = 符号位 + 指数位 + 尾数位

2、尾数部分可能丢失,造成精度损失(小数都是近似值)。

使用细节

1、与整数类型相似,Java浮点类型也有固定的范围和字段长度,不受具体操作系统的影响。

2、Java的浮点型常量默认为 double,当声明 float型 常量时,需添加 ‘F’ 或 ‘f’。

3、浮点数常量的两种表现形式: 十进制 和 科学计数法 形式

4、通常情况下使用 double类型。

5、浮点数在判断数值相等时的判断陷阱。

如果是直接查询得到的小数或者赋值的小数,是可以进行相等判断的。

public class FloatDetail{
	public static void main(String[] args) {
		//  Java 的浮点型常量默认为 Double类型, 声明float 类型时, 需加 f 或 F
		// float num1 = 1.1;  // 对不对? ❌
		float num2 = 1.1F;  // 对
		double num3 = 1.1; // 对
		double num4 = 1.1f;  // 注意,大字节包含小字节, 没问题。对

		// 十进制数形式, 如 5.12.    512.0f    .512 
		double num5 = 5.12;
		double num6 = 5.0f;
		double num7 = .12; // 0.12


		// 科学技术法形式, 如 5.12e2 [5.12的10的2次方]   5.12e-2  [5.12 / 10 / 10]
		System.out.println(5.12e2); // 512.0
		System.out.println(5.12e-2); // 0.0512

		// 浮点数使用陷阱, 2.7 和  8.1 / 3 的比较
		double num8 = 2.7;
		double num9 = 8.1 / 3;
		System.out.println(num9);    // 输出的为接近2.7的小数,而不是2.7
		// 错误写法
		if (num8 == num9){
			System.out.println("相等");  // 不会输出结果
		}
		// 正确写法
		if (Math.abs(num9 - num8) < 0.000001){
			System.out.println("差值非常小,满足规定的精度,认为相等");
		}
		System.out.println("求差的绝对值" + Math.abs(num9 - num8));
	}

}

Java API文档

1、API(Application Programming Interface,应用程序编程接口)

中文在线文档:

码工具 - 代码在线工具箱

2、Java语言提供了大量的基础类,因此Oracle公司为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类以及类里包含的方法

字符类型

基本介绍

字符类型可以表示单个字符,char是两个字节,可以存放汉字。

格式: char c1 = ‘张’ 注意使用单引号。

char c1 = '\n'; // 输出换行
char c2 = 97;  // 97数字编码对应的字符

使用细节

1、字符使用单引号

2、在Java中,char的本质是一个整数,输出的为Unicode码中对应的字符。

// 在Java中,char的本质是一个整数,输出的为Unicode码中对应的字符。
char c1 = 97;
System.out.println(c1);

char c2 = 'a';
System.out.println((int)c2); // 输出‘a’对应的数字 97

System.out.println('a' + 10); // 107

主题数一定要和lda一致性最高值一样吗_jvm_04

3、 char是可以参加运算的。【记住】

System.out.println('a' + 10);   // 107  类型为:class java.lang.Integer
测试
char c5 = 'b' + 1;
System.out.println((int)c5);   // 输出 99
System.out.println(c5);   // 输出值为class java.lang.Character 类型,char 99在Unicode中对应的字符,即输出为 ‘c’

编码

ASCII:由美国人设计,仅有英文单词和一些其他的常用符号,用一个字节表示,一个字节可以表示256个字符,但美国不需要这么多字符,所以最后设计了128个。

Unicode:不论是汉字还是字母,均占用两个字节,这样就造成空间的浪费。【前128个与ASCII码相同。】

utf-8: 汉字用3个字节存储 [汉字比较多,所以使用3个字节才能尽可能多的表示汉字] , 1个字节表示字母

gbk:字母1个字节,汉字2个字节 gbk表示的汉字数量不如utf-8多。

big5码:繁体中文,台湾,香港, 当内容为繁体中文时,转为utf-8会报错,因为在utf-8中找不到对应的字符

utf8和utf8mb4的区别_骑台风走的博客-CSDN博客_utf8mb4和utf8有什么区别

布尔类型

基本介绍

1、布尔类型数据只允许取值 true 和 false , 无null

2、boolean 类型占 1个字节

3、boolean 类型 适于逻辑运算,一般用于程序流程控制。

注意

不可以 0 或者 非0 的整数代替false和true

数据类型转换

自动数据类型转换

定义:

当java程序在进行赋值或者运算是,精度小的类型自动转换为精度大的数据类型。这个就是自动类型转换。

数据类型按照精度(容量)大小排序为:

char < int < long < float < double

byte < short < int < long < float < double

int a = 'c';  // 对    char --> int
double d = 80; // 对,输出为80.0   int -- double

注意事项【重点】

1、当多种类型的数据进行混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。

2、当把精度大的数据类型赋值给精度小的数据类型时,就会报错,反之则类型自动转换。

3、(byte, short) 和 char 之间不会进行自动转换。

3、(byte, short) 和 char 之间不会进行自动转换。

// 当把数据赋值给 byte 时,先判断该数值是否在 byte 范围内,如果在范围内则可以赋值
// 当使用变量进行赋值时,则首先进行类型判断。
byte b1 = 10;  // b1 为 byte 类型,而不是默认的 int 类型。
char c1 = b1; // 报错,byte,char 不能自动转为char。

4、byte,short,char 三者间进行运算时首先将类型转换为int

byte b2 = 1;
byte b3 = 2;
short s1 = 1;
short s2 = b2 + s1;   //错误。因为 b2 + s1 => int ,int转为short会有内存损失。
byte b4 = b2 + b3;  // 运算结果为int, 报错❌

5、boolean 不参与类型的自动转换

6、自动提升原则,表达式结果的类型自动提升为操作数中的最大类型

byte b4 = 1;
short s3 = 100;
int num200 = 200;
double num300 = 1.1;
double num500 = b4 + s3 + num200 + num300;  //输出为最大的类型double类型,。

强制类型转换

介绍

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制类型转换符(), 但注意,可能造成精度降低或溢出,格外要注意。

int i = (int)1.9;  // 1 由double转为int 
int j = 100;
byte b1 = (byte)j; // 100 类型为:byte
int d = 2000;
byte b2 = (byte)d; // 输出值为-48, 数据溢出

细节

1、强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

int y = (int)(10 * 3 + 6 * 1.5); // 通过使用小括号提升优先级   double -> int

2、char类型可以保存int的常量值,但不能保存int的变量值,需要进行强转。

char c1 = 100; // 没问题
int m = 100; // 没问题
char c2 = m;   // 错误,不能保存int变量值,相当于int类型赋值给char类型,可能数据丢失。
char c3 = (char)m; // 强制转换,没问题

测试

主题数一定要和lda一致性最高值一样吗_数据类型_05

基本数据类型和String类型的转换

转换方法

基本类型转String类型:将基本类型的值 + “” 即可。

String类型转基本数据类型: 通过基本类型的包装类,调用parseXX方法即可。

int n1 = 100;
float f1 = 1.1F;
double d1 = 4.5;
boolean b1 = true;

String s1 = n1 + "";  // 100
String s2 = f1 + "";  // 1.1
String s3 = d1 + "";  // 4.5
String s4 = b1 + "";  // true
String s1 = "123";
byte num1 = Byte.parseByte(s1);  // 123
int num2 = Integer.parseInt(s1); // 123
double num3 = Double.parseDouble(s1); // 123.0
short num4 = Short.parseShort(s1); // 123
long num5 = Long.parseLong(s1); // 123
float num6 = Float.parseFloat(s1); // 123.0
boolean b = Boolean.parseBoolean("true"); // true

// 把字符串转为字符  含义:只能把字符串的第一个字符转为字节
s1.charAt(0); // 1

注意事项

1、注意将String类型转为基本类型时,要确保String类型能够转成有效的数据。比如“123”可以转数字,但"hello"就不可以了,
2、格式不正确,就会抛出异常。