Java关键字,标识符,数据类型,运算符

本文深入解析Java关键字的特点及用途,阐述了Java命名规范的重要性,包括标识符的规则、驼峰命名法的应用,以及各类元素如包、类、接口、变量、方法和常量的命名建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键字: Java预定义的有特殊含义的单词

特点:
	1.常用的开发工具高级记事本/IDE,能够变颜色的一些单词
	2.都是小写字母组成
	3.都是由特殊含义的单词
			public : 公共的
			class: 类
			static: 静态的
			void: 无返回值
	4.Java一共提供了50个关键字
		 其中,"const"和"goto"这两个关键字在Java语言中并没有具体含义
		 goto这个关键字可以实现代码的跳转,导致程序的可读性下降,所以JDK将改关键字的含义屏蔽
		 但是没有删除它,可能未来JDK升级之后重新使用,保留使用
	5.关键字不能够作为标识符

标识符:Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
简而言之就是给类,接口,抽象类,接口的实现类,常量,变量,方法等元素取名字。

规则:必须准守
	1.由字母,数字,下划线_,美元符号$组成
	2.不能以数字开头
	3.Java对于大小写严格区分
	4.不能是Java中的关键字
	
规范: 
	1.见名知意
	2.不允许使用中文和拼音
	3.满足驼峰命名法(待会讲)
	4.命名的长度最好不要超过31个字符

提供一套开发中标准规范:
包,类,抽象类,接口,接口的实现类,变量,方法,常量
包(文件夹) 
	1.一般都是公司的域名反写
	2.所有单词使用.隔开
	3.每个单词都是小写组成
	eg: www.sxt.com  com.sxt.www   www.baidu.com  com.baidu.test
类(满足抬头骆驼) class
	1.所有单词的首字母大写,其他字母小写
	eg: HelloWorld IdentifiedDemo
接口: (满足抬头骆驼) interface
	1.所有单词的首字母大写,其他字母小写
	2.一般会在第一个单词的前面加上一个大写的I 
	eg: IStudent ITeacher
接口的实现类 (满足抬头骆驼)
	1.所有单词的首字母大写,其他字母小写
	2.一般都会在最后一个单词后面加上 Impl  implements
	eg: StudentImpl
抽象类(满足抬头骆驼)
	1.所有单词的首字母大写,其他字母小写
	2.在单词的开头一般都会加上 Abs abstract
	AbsStudent
变量 (满足低头骆驼)
	1.第一个单词首字母小写,其他单词首字母大写
	2.一般都是名词
	eg: studentName studentScore  score  totalScore
方法(满足低头骆驼)
	1.第一个单词首字母小写,其他单词首字母大写
	2.一般都是动词
	eg: getTotalScore getAverageScore getMaxValue getMinValue main
常量: 
	1.所有单词都是大写
	2.每一个单词都使用_隔开
	eg: MAX_VALUE  MIN_VALUE PI
	
面试题: 说一说你Java的命名规范

注释: 为程序进行解释说明,不会被JVM执行

注释分类:
	1.单行注释  
		// 
	2.多行注释
		/x x/
	3.文档注释(后面在讲解面向对象的时候详细讲解) javadoc
		/xx  x/
	
注意: 
	1.注释不能够嵌套
	2.注释不要随意的删除
	3.养成一个好的习惯,先写注释,再写代码,
	能够培养一个程序员的逻辑思维,以及代码的可读性
		
注释的好处:
	1.能够提高程序的可读性
	2.开发中工作的交接 (文档注释)
	3.程序调试 (后期还会使用Debug断点调试)

为什么需要有常量?
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类型的小数常量
		后面讲解数据类型的时候介绍float和double
	布尔常量
		只能取两个值 
		true false 
	字符常量
					
		什么是字符?字符的本质是什么?数字 整数   a 97 0 48 A 65 	今晚攻打高老庄  27 48 65 32 89 98 36		
		什么是字节?字节本质是什么? 数字 数据传输的最基本单位 
		a 1 张 换行 制表符 都是字符 65535   
		
		字符在计算机中存储本质还是数字
		
		1byte = 8bit  0001 0001
		1kb = 1024byte 
		1mb = 1024kb
		1gb = 1024mb
		1tb = 1024gb
		
		
		2个字节足够表示全世界所有的字符 
		
		11 00 10 01
		1bit 能够表示多少种状态 2种  0 1   
		2bit 4  10 01 11 00
		3bit 8   
		8bit 256
		16bit 65536  
		16bit = 2byte
		
		Java使用2个字节表示一个字符
		0000 0000 0000 0000 65536
		
		一般2个字节表示一个汉字GBK
		GBK UTF-8 Unicode ISO-8859-1 ASCII  
		0  48
		A  65
		a  97
		
		1.字符常量由 '' 包裹
		2.里面只能够有一个字符
		3.转义字符可以由两个字符组成,第一个是\
		
		先记住常见的字符编码:
			a 97  b 98
			A 65  B
			0 48
			
			\t 制表
			\n 换行
			\r\n 换行
			\'
			\\
			\"
			
	字符串常量
		1.由双引号包裹
		2.里面可以有一个字符也可以有多个字符
		3.字符串里面可以是空串
	null常量
		表示的是引用类型的常量,会在后面讲解面向对象的时候详细讲解
		
	自定义常量 后面讲解面向对象的时候讲解 (使用 final 关键字修饰的 变量 称为常量)
	
注意:
	1.System.out.println();输出的都是数值的十进制
	2.默认整型常量默认是 int 类型
	3.默认小数类型就是 double 类型
	4.字符的数量不会超过65535
	5.windows系统的换行符是 \r\n \n \R 
	6.计算机最多能表示36进制 (Integer类可以轻易地实现进制转换)

补充知识点:
进制转换的5种情况  3 ——> 9
1.其他进制 -> 十进制
2.十进制 -> 其他进制
3.X进制 -> Y进制
4.十进制和二进制的快速转换 8421BCD码  
5.二进制和八进制和十六进制之间的快速转换法 分组法

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

变量的本质 : 就是一个地址

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

变量的定义:
	变量的三要素:
		1.声明
		2.赋值
		3.使用
	注意:
		1.变量一定要先声明再赋值再使用
		2.变量不能够重复定义
		3.变量不能够连续定义 int a = b = c = 10; 
		4.建议一行只写一条语句
		
数据类型: Java是一门强类型语言,针对每一种数据都提供了对应的类型
			int x; byte short int long
			float f;
		  JavaScript是一门弱语言类型,只有一种数据类型的声明,就是var
			var x;
			var f;
			
数据类型的分类:
	数值的表示方式:
		65536
		0000 0000
		最高位是符号位: 1表示负数,0表示整数
		其他位是数值位: 
	八大基本数据类型
		整数类型			字节数				取值范围
			byte			  1					0000 0000 -128~127 
			short			  2					0000 0000 0000 0000 -32768 ~ 32767
			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
			
			0000 0000 0000 0000 0000 0000 0000 0000 
			注意: 
				1.虽然小数表示的范围特别大,但是永远不能够存储所有的小数,因为小数存在无限不循环小数
				2.同样是4/8个字节的小数类型取值范围大于整数类型,原因是小数和整数的存储形式不一样
				3.在处理金融相关项目的时候,小数的计算要求精度非常高,那么使用float或者double来表示会出现精度问题,
				后期考虑使用BigDecimal来处理 
		布尔类型
			boolean			  1					0000 0000 false / 0000 0001 true 
		字符类型
			char			  2					0 ~ 65535
	引用数据类型 后面讲解面向对象详细说明
		类 (class) 
		接口 (interface)
		数组 ([])
		
	面试题: 
		1.String是基本数据类型吗?
		2.说一说Java的数据类型
		3.数组是什么类型?

数据类型转换

类型转换的依据: 取决数据的取值范围

byte -> short -> int -> long -> float -> double
		char  ->
		
注意:
	1.boolean类型不能够参与类型转换
	2.char和byte/short只有交集关系,没有子集关系
	
1.自动类型转换
	将小类型的数据转换成大类型数据,系统会自动转换

2.强制类型转换
	将大类型的数据转换成小类型的数据,会编译报错
	解决办法: 强制类型转换	
	格式:
		目标类型 变量名 = (目标类型) 被转换的类型;
	强制类型转换会出现的问题:
		1.精度的丢失
		2.数据的溢出
		
3.byte/short/char特例

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

5.表达式类型提升
	当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换
	
6.当byte short char 之间参与运算的时候,底层都会转换成int类型来计算

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

8.字符串在参与运算中的转换问题,字符串相加是拼接操作

9.变量计算和常量计算问题
	变量相加,系统无法判断具体的结果
	常量相加,在编译时期,系统就会运算结果	
public class DataTypeConvertDemo {
	public static void main(String[] args){
		/* byte by = 128;
		System.out.println(by);
		*/
		
		// float f = 2.5;
		
		// 自动类型转换: 将小类型的数据转换成大类型数据,系统会自动转换
		// 理解为将小杯子水倒入到大杯子中,不会出现任何问题
		double d = 2.5f;
		
		// 2.强制类型转换
		// 错误: 不兼容的类型: 从double转换到float可能会有损失
		// float f = 2.5D;
		float f = (float)2.5D;
		System.out.println(f);
		
		int i = (int)2.5;
		System.out.println(i);
		
		byte by = (byte)130;
		System.out.println(by);
		
		// 为什么 byte by = 30; 是可以通过编译的?
		
		// 3.byte/short/char特例
		short s = (short)32768;
		System.out.println(s);
		char ch = (char)65536; // \u0000 空字符
		System.out.println(ch);
		
		// 4.byte/short 和 char 参与转换,都需要强制类型转换
		byte by2 = 97;
		char ch2 = (char)by2;
		System.out.println(ch2);
		
		char ch3 = 'a';
		byte by3 = (byte)ch3;
		System.out.println(by3);
		
		// 5.表达式类型提升
		// 当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换
		/*
			表达式由操作数和运算符构造的式子
			操作数: 常量和变量
			运算符: + - * /
		*/
		double d2 = 3.5;
		int i2 = (int)(d2 + 10);
		System.out.println(i2);
		
		// 6.当byte short char 之间参与运算的时候,底层都会转换成int类型来计算
		// 其实在Java中只有整数一种类型(int)是我们在计算机底层运算的类型, char byte short 都是扩展类型
		// 参与运算指的是 + - * / > < ...
		short s2 = 30;
		byte by4 = 10;
		short s3 = (short)(s2 + by4);
		System.out.println(s3);
		
		// 7.boolean类型不能够参与运算和转换
		boolean bool = false;
		// int i3 = (int)bool;
	
		// 8.字符串在参与运算中的转换问题,字符串相加是拼接操作
		// 字符串和任意类型进行拼接,结果还是字符串类型
		String str = "HelloWorld";
		str = str + 1;
		System.out.println(str);
		System.out.println(2 + 2 + "222" + 2 + 2); // 422222
		
		/*
			9.变量计算和常量计算问题
		*/
		byte by6 = 10;
		short s4 = 20;
		short s5 = by6 + s4;
		System.out.println(s5);
		
		short s6 = 10 + 20;
		System.out.println(s6);
	}
}

运算符: 针对常量和变量之间进行运算的符号
eg: a + 1 a + b a / b a > b

运算符的分类:
	算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 三目运算符
	
算数运算符
	+ - * / % ++ --
	
	+在Java当中含义很多
		1.作为正数  单目运算符 双目运算符 三目运算符 +5 a + b a ? b : c
		2.加法运算
		3.字符串连接符
		
技巧:
	1.如何计算中防止精度丢失
	2.如何分离中一个数的每一位
		1234
		分离个位: 1234 / 1 % 10
		分离十位: 1234 / 10 % 10
		分离百位: 1234 / 100 % 10
		分离千位: 1234 / 1000 % 10

自增自减运算符

++ -- 属于单目运算符

++ 表示自增1
-- 表示自减1

分为
	单独使用
		表示自增或者自减,没有任何区别
	参与运算
		如果++放在操作数的左边,就表示先自增再参与运算
		如果++放在操作数的右边,就表示先参与运算,再自增或者自减1

赋值运算符

= : 这个等于号在Java中表示赋值的意思,真正数学意义上的相等是 ==,在JavaScript中还有===

扩展赋值运算符:
	+= -= *= /= %= 
	
面试题:short s1 = 1;?s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错??
前者编译失败,short和int类型计算结果是int类型,将int类型赋值给short类型,需要强制类型转换
后者编译通过,因为使用扩展赋值运算符系统会自动帮我们强制类型转换

技巧: 如何交换两个数?
int x = 10;
int y = 20;
定义中间变量temp

关系运算符

> < >= <= != ==

关系运算符的结果是boolean类型

逻辑运算符
作用: 连接多个boolean类型的表达式
boolean类型的表达式1 逻辑运算符 boolean类型的表达式2 逻辑运算符 boolean类型的表达式3

& 按位与
| 按位或
^ 异或

&& 短路与
|| 短路或

! 非

与: 有一个为false结果为false
	如果都为true结果才为true
	
或: 有一个为true结果为true
    如果两个都为false结果才为false

面试题: & 和 && 的区别
	& 表示按位与,无论什么情况都会同时计算运算符两边的表达式
	&& 表示短路与, 如果前面的表达式为false,那么无论后面结果如何,都不会去计算后面表达式的值
	&&开发中使用,&基本不用
	&常用于位运算,位运算的效率比普通运算要高很多 
	1001 & 0110 = ?
		1 0 0 1
	&	0 1 1 0
	-----------
		0 0 0 0
		
	1001 | 0110 = ?
		1 0 0 1
	|	0 1 1 0
	-----------
		1 1 1 1
		
^ : 相同为false,不同为true

	1001 & 0110 = ?
		1 0 0 1
	^	1 1 1 0
	-----------
		0 1 1 1
		
! : 取反
	当!的个数是奇数个的时候,结果相反
	当!的个数是偶数个的时候,结果不变

条件运算符(三目运算符)

格式: X ? Y : Z
	  X表达式必须是boolean类型的表达式
	  执行流程:
		首先计算X表达式的结果, 如果X的结果为true, 那么整个表达式的结果就是Y的值
							   如果X的结果为false,那么整个表达式的结果就是Z的值

关于三目运算符值的类型问题

表达式: 符合一定语法规则的运算符和操作数的式子

运算符: 算数运算符,赋值运算符,关系运算符,逻辑运算符,位运算符(了解), 三目运算符
操作数: 变量或者常量

a + b  a * 6 4 - 3
表达式的分类:
	按照复杂程度来分:
		简单表达式: 只有一个运算符的表达式 a + b  a * 6 4 - 3
		复杂表达式: 两个或者两个以上的运算符组成的表达式 a > b && a < b
		如果复杂表达式就必须要知道运算符的优先级
	
	按照运算符两边的操作数来分
		单目 双目 三目
		+5 3+a x?y:z
		
	按照名称来分
		a + b 算数表达式式
		
表达式的值: 整个表达式的结果
			int a = 30; int b = 40; a * b
表达式的值的类型: 
			int a = 30; int b = 40; a * b
		
学习复杂表达式:
	(a - b) * c - 4     
	i < 30 && i % 10 != 0 

运算符的优先级
	1.有括号先计算括号里面的
	2.单目运算符 > 双目运算符 > 三目运算符
	3.算数运算符(* / % > + -) > 关系运算符(> <... > == !=) > 逻辑运算符(&& > ||) > 条件运算符 > 赋值运算符
	4.如果运算符的优先级相同,从左至右即可
	5.+ - > ++ -- !
技巧: 如果针对特别复杂的表达式,可以根据运算符的优先级规律,然后使用()改变优先级,提高程序的可读性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值