关键字,标识符,常量,变量,类型转换

关键字:

JAVA预定义的单词,简而言之,有特殊含义的单词,能够使得开发工具变颜色的单词。

关键字的特点:

1.所有字母都是小写组成。
2.关键字不能够作为标识符。
3.java中一共有50个关键字,注意 const goto也是关键字。
const goto在java中没有特殊含义,作为保留使用,但也是关键字。

标识符:

标识符:
本质就是给JAVA中的包,类,接口,接口的实现类,变量,方法,常量取名字,需要满足一定的规则和规范。
规范:
1.见名知意。
2.部分满足驼峰命名法(类和接口满足抬头骆驼,变量和方法满足低头骆驼)。
3.可以使用中文命名,但不建议。
4.长度最好不要超过31个字符。

规则:
1.必须由字母/数字/下划线_/美元符号$ 组成。
2.不能以数字开头。
3.不能是java中的关键字。
4.java是区分大小写的
提供一套命名规范
包:
1.一般都是公司域名反写。
2.所有单词使用.隔开。
3.每个单词都是小写字母组成。
eg:域名为www.sxt.com 命名为:com.sxt
类(满足抬头骆驼):
1.所有单词首字母大写,其他字母小写。
eg:HelloWorld IdentifiedDemo
接口(满足抬头骆驼):
1.所有单词首字母大写,其他字母小写。
2.一般会在第一个单词的前面加上一个大写的 I
eg:IStudent ITeacher
接口的实现类(满足抬头骆驼):
1.所有单词首字母大写,其他字母小写。
2.一般会在最后一个单词的后面加上 Impl
eg:StudentImpl
抽象类:
1.所有单词首字母大写,其余字母小写。
2.在单词的开头一般都会加上 Abs
eg:
变量(满足低头骆驼):
1.第一个单词首字母小写,其余单词首字母大写。
2.一般都是名词。
eg:studentName studentScore score
方法(满足低头骆驼):
1.第一个单词首字母小写,其余单词首字母大写。
2.一般都是动词。
eg:getTotalScore getAverageScore
常量:
1.所有单词都是大写。
2.每个单词都用"_"隔开。
eg:MAX_VALUE MIN_VALUE

为什么需要有常量?
PI 一周有7天 一年多少天
常量: 在程序的执行过程中,其值不会发生改变的量

常量的分类:
	整型常量
		二进制 由0,1组成,由0b开头 0101010101
		八进制 由0~7组成,由0开头
		十进制 由0~9组成,默认就是十进制
		十六进制 由0~9,A,B,C,D,E,F 组成,由0x开头
	小数常量
		0.2F float类型的小数常量
		0.2D double类型的小数常量
	布尔常量
		只能取两个值 
		true false
	字符常量
				  
		什么是字符?字符的本质是什么?数字 整数
		什么是字节?字节本质是什么? 数据传输的最基本单位 数字
		a 1 张 换行 制表符 都是字符 65535   
		
		字符在计算机中存储本质还是数字
		
		1byte = 8bit   
		1kb = 1024byte
		1mb = 1024kb
		1gb = 1024mb
		1tb = 1024gb
		
		1bit 能够表示多少种状态 2种  0 1
		2bit 4  10 01 11 00
		3bit 8   
		8bit 256
		16bit 65536
		
		一般2个字节表示一个汉字GBK
		
		1.字符常量由 '' 包裹
		2.里面只能够有一个字符
		3.转义字符可以由两个字符组成,第一个是\
		
		先记住常见的字符编码:
			a 97
			A 65
			0 48
			
			\t 制表
			\n 换行
			\r\n 换行
			\'
			\\
			\"
			
	字符串常量
		1.由双引号包裹
		2.里面可以有一个字符也可以有多个字符
		3.字符串里面可以是空串
	null常量
		表示的是引用类型的常量,会在后面讲解面向对象的时候详细讲解
		
	自定义常量 后面讲解面向对象的时候讲解
	
注意:
	1.System.out.println();输出的都是数值的十进制
	2.默认整型常量默认是 int 类型
	3.默认小数类型就是 double 类型
	4.字符的数量不会超过65535
	5.windows系统的换行符是 \r\n \N \R 



public class ConstantDemo {

public static final int MAX_VALUE = 100;

public static void main(String[] args){
	System.out.println(0b1011);
	System.out.println(037);
	System.out.println(0x9AF);
	
	System.out.println(0.2); // double float
	System.out.println(0.2f);
	
	System.out.println(true);
	System.out.println(false);
	
	System.out.print('a');
	
	System.out.print('\t');
	
	System.out.print('b');
	
	System.out.print('\'');
	
	System.out.print('\n');
	
	System.out.print('\\');
	
	System.out.print('"');
	
	System.out.print((int)'0');
	
	System.out.println("\"");
	
	
	}
}

变量: 在程序的执行过程当中,其值可以发生改变的量,类似于数学的未知数X

变量的内存分配
int x = 10;
int x; // 1.声明
x = 10; // 2.赋值
System.out.println(x); // 3.使用

数据类型: Java是一门强语言类型,Java对每一种数据都提供了对应的类型
		  比如JavaScript就是弱语言类型
		  int x = 10; double d = 20;
		  var x = 10; var d = 20.5;
		 
数据类型的分类 
	八大基本数据类型
		整数类型				字节数				取值范围
		byte						1				8bit = 256种状态  -128~127
		short						2				00000000 00000000  -2^15 ~ 2^15-1
		int 						4				-2^31 ~ 2^31-1
		long						8				-2^63 ~ 2^63-1
		浮点类型
		float						4				-3.403E38 ~ 3.403E38
		double						8				-1.798E308 ~ 1.798E308
		注意:
			1.虽然小数表示的范围很大,但是不能够完全表示所有的小数,因为存在无限不循环小数
			2.同样是8个字节的long和double类型,为什么double取值范围会比long类型多很多? -- 存储方式不一样 
			3.在处理金融相关的项目的时候,不能使用float和double类型来计算,因为会出现精度丢失,后面学习BigDecimal类可以解决这个问题
		字符类型
		char						2				0 ~ 65535
		布尔类型
		boolean						1				true false  
	引用数据类型 (之后学习面向对象的时候讲解)
		类 class
		接口 interface
		数组 [] int[]


变量的定义:
	变量的三要素:
		1.声明
		2.赋值
		3.使用
	注意:
		1.变量一定要先声明再赋值再使用
		2.变量不能够重复定义
		3.变量不能够连续定义 int a = b = c = 10; 

public class VariableDemo {
	public static void main(String[] args){
		int x;
		x = 10;
		System.out.println(x);
	
	// 1.变量一定要先声明再赋值再使用
	int y;
	// System.out.println(y);
	
	// 2.变量不能够重复定义
	// int x = 20;
	
	// 3.变量不能够连续定义
	// int a = b = c = 10; 
	int a=10,b=20,c=30;
	
	int a1 = 10; 
	int a2 = 20; 
	int a3 = 30;
	
	// 定义一个整数
	byte by = 127;
	
	// 定义一个short
	short s = 32767;
	
	long l = 100;
	System.out.println(l);
	
	long ll = 10000000000000L; 
	
	float f = 2.5f;
	System.out.println(f);
	}
}

类型转换

类型转换的依据: 取决于数据的取值范围,而不是字节数
byte -> short -> int -> long -> float -> double 
		char  ->
注意: 
	1.char和byte/short有交集关系,而没有子集关系
	2.其他的都满足子集关系
	3.boolean不能参与类型转换
	
1.自动类型转换
	将小类型赋值给大类型,系统会自动将小类型转换成大类型,不会出现任何问题

2.强制类型转换
	将大类型赋值给小类型,可能会出现如下问题
	格式:强制类型转换格式:目标类型 变量名=(目标类型)(被转换的数据);
		a.精度的丢失
		b.数据的溢出
	
3.byte/short特例

4.byte/short 和 char 之间参与转换,都需要强制类型转换

5.表达式类型提升: 类型会自动向高类型转换

6.byte short char 之间参与运算,底层都会转换成int类型来计算

7.boolean类型不能够参与类型转换

8.字符串和任何类型进行加法运算都是拼接操作,在JavaScript中可以进行其他运算

9.变量计算和常量计算问题
	a.常量计算,编译器会自动帮我们计算结果
	b.变量计算,编译器无法帮我们识别类型和结果

public class DataTypeConvertDemo {
	public static void main(String[] args){
	// 1.自动类型转换
	float f = 25;
	
	// 2.强制类型转换
	
	double d = 3.5;
	
	float ff = (float)2.5;
	System.out.println(ff);
	
	int i = (int)2.5;
	System.out.println(i);
	
	byte b = (byte)130;
	System.out.println(b);
	
	// 3.byte/short特例
	byte bb = 127;
	System.out.println(bb);
	
	short s = 32767;
	System.out.println(s);
	
	// 4.byte/short 和 char 之间参与转换,都需要强制类型转换
	char c = 'a';
	byte bbb = (byte)c;
	System.out.println(bbb);
	
	byte bbbb = 97;
	char ch = (char)bbbb;
	System.out.println(ch);
	
	char cc = 'b';
	int ii = cc;
	System.out.println(ii);
	
	// 5.表达式类型提升: 类型会自动向高类型转换
	int iii = (int)(0.5f + 20);
	System.out.println(iii);
	
	// 6.byte short char 之间参与运算,底层都会转换成int类型来计算
	byte b2 = 97;
	char ch2 = (char)(b2 + 1);
	System.out.println(ch2);
	
	byte b3 = 97;
	short s3 = 1;
	char ch3 = (char)(b3 + s3);
	System.out.println(ch3);
	
	char ch4 = 'c';
	short s4 = 1;
	char ch5 = (char)(ch4 + s4);
	System.out.println(ch5);
	
	// 8.字符串和任何类型进行加法运算都是拼接操作,在JavaScript中可以进行其他运算
	System.out.println("abc" + 1);
	System.out.println(2 + 2 + "222" + 2 + 2); 
	
	/*
		9.变量计算和常量计算问题
		a.常量计算,编译器会自动帮我们计算结果
		b.变量计算,编译器无法帮我们识别类型和结果
	*/
	/*byte b4 = 10;
	short s5 = 20;
	short s6 = b4 + s5;
	System.out.println(s6);*/
	
	/*byte b5 = 126;
	int i6 = 1;
	byte b7= b5 + i6;
	System.out.println(b7);*/
	

	byte b8= 127;
	System.out.println(b8);
	
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42539533/article/details/86376322