Java基础知识点汇总一

本文详细介绍了Java程序的编译与运行过程,强调了JVM在字节码执行中的作用。讨论了基本数据类型及其转换规则,明确了变量的作用域、命名规范和类型转换。此外,还涵盖了运算符的使用、控制语句如switch-case和循环结构,并指出字符串在运算中的特殊性。
摘要由CSDN通过智能技术生成

对Java的加载与执行的理解:

​ java程序非常重要的两个阶段:
​ 编译阶段:将源文件.java变成字节码文件.class的过程(编译实质上是检查语法正不正确)
​ 运行阶段:JVM会将字节码文件装载进去,然后对字节码进行解释
在这里插入图片描述

基本数据类型

基本数据类型又可以划分为4大类8小种:
第一类:整数型
byte,short,int,long (没有小数的)
第二类:浮点型
float,double (带有小数的)
第三类:布尔型
boolean:只有两个值true和false,true表示真,false表示假
第四类:字符型
char:java中规定字符型字面量必须使用单引号括起来。属于文字。

综合的看一下,在类型转换的时候需要遵循哪些规则?

第一条:八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以
进行转换;

第二条:如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋
值给byte,short,char 类型的变量;

第三条:小容量向大容量转换称为自动类型转换,容量从小到大的排序为:
byte < short(char) < int < long < float < double,其中 short和 char
都占用两个字节,但是char 可以表示更大的正整数;

第四条:大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,
但运行时可能出现精度损失,谨慎使用;

第五条:byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;

第六条:多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;

`所有的笔试题都超不出以上的6条规则。死记硬背。

小语法

类体当中只能由属性和方法构成,而不是直接的java语句(类 = 属性 + 方法)

​ JVM在执行程序的时候,会主动去找main()方法。没有这个方法,程序是无法执行的。

1、这个内容没有为什么,只能经过测试,然后根据测试结果进行记忆。
2、第一个结论?
	一个java源文件中可以定义多个class。

3、第二个结论?
	public的类不是必须的。可以没有。

4、第三个结论?
	在源文件中只要有一个class的定义,那么必然会对应生成一个class文件。

5、第四个结论?
	public的类可以没有,但如果有的话,public修饰的类名必须和源文件名保持一致。

6、第五个结论?
	public的类有也只能有1个。
7、第六个结论?
	一个java源文件中不能存在重复的类 

标识符

标识符可以标识什么?
可以标识:
类名、接口名
方法名
变量名、常量名

1、标识符命名规则


	规则1:标识符只能由数字、字母(包括中文)、下划线_、美元符号$组成,
	不能含有其它符号。

	规则2:标识符不能以数字开头

	规则3:关键字不能做标识符。例如:public class static void 这些蓝色的字体
	都是关键字,关键字是不能做标识符的。

	规则4:标识符是严格区分大小写的。大写A和小写a不一样。

	规则5:标识符理论上是没有长度限制的。

2、标识符命名规范

		规范1:见名知意(这个标识符在起名的时候,最好一看这个单词就知道啥意思。)

		规范2:遵循驼峰命名方式,什么是驼峰(一高一低,一高一低...)
			驼峰有利于单词与单词之间很好的进行分隔
			BiaoShiFuTest,这个很好,一眼就能看出来是4个单词。

		规范3:类名、接口名有特殊要求
			类名和接口名首字母大写,后面每个单词首字母大写。
				StudentTest、UserTest ,这是类名、接口名。

		规范4:变量名、方法名有特殊要求
			变量名和方法名首字母小写,后面每个单词首字母大写。
				nianLing(NianLing这样就不符合了。)
				mingZi(MingZi这样也不符合了。)
		
		规范5:所有“常量”名:全部大写,并且单词和单词之间采用下划线衔接。
			USER_AGE :用户年龄
			MATH_PI:固定不变的常量3.1415926.....

变量

变量:变量其实就是内存当中存储数据的最基本的单元。变量就是一个存储数据的盒子。

java虚拟机根据变量的类型给变量分配内存空间

数据类型有什么用呢?
记住:不同的数据类型,在内存中分配的空间大小不同。
也就是说,Java虚拟机到底给这个数据分配多大的空间,主要还是看这个变量的数据类型。
根据不同的类型,分配不同大小的空间。

注意:在java语言中“数据”被称为“字面量”。
		10
		1.23
		true
		false
		'a'
		"abc"
		以上这些都是数据,在程序中都被叫做“字面量”。

		字面量可以分为很多种类:
			整数型字面量:1 2 3 100 -100 -20 ....
			浮点型字面量:1.3 1.2 3.14.....
			布尔型字面量:true、false没有其它值了,表示真和假,true表示真,false表示假

			字符型字面量:'a'、'b'、'中'
			字符串型字面量:"abc"、"a"、"b"、"中国"
	public class VarTest06{
	public static void main(String[] args){
		// 声明三个变量,都是int类型,起名a,b,c
		// 通过测试得出结论是:a,b没有赋值,c赋值100
		int a, b, c = 100;
	// 变量必须先声明,再赋值,才能访问,a,b两个变量赋值了吗?
	//错误: 可能尚未初始化变量a
	//System.out.println(a);
	//错误: 可能尚未初始化变量b
	//System.out.println(b);
	System.out.println(c);
	// 给a赋值
	a = 200;
	// 给b赋值
	b = 300;
	System.out.println(a);
	System.out.println(b);
	}
}

1、变量的一个分类
变量根据出现的位置进行划分:
在方法体当中声明的变量:局部变量。
在方法体之外,类体内声明的变量:成员变量(分为实例变量和静态变量)。

2、注意:局部变量只在方法体当中有效,方法体执行结束该变量的内存就释放了。

3、变量的作用域
1、什么是作用域?
变量的有效范围。
2、关于变量的作用域,大家可以记住一句话:
出了大括号就不认识了。(死记这句话。)
3、java中有一个很重要的原则:
就近原则。(不仅java中是这样,其它编程语言都有这个原则。)
哪个离我近,就访问哪个。

数据类型

在java中有一条非常重要的结论,必须记住:
在任何情况下**,整数型的“字面量/数据”默认被当做int类型处理**。(记住就行)
如果希望该“整数型字面量”被当做long类型来处理,需要在“字面量”后面添加L/l
建议使用大写L,因为小写l和1傻傻分不清。

// 题目:
		// 可以吗?存在类型转换吗?
		// 2147483647默认被当做int来处理
		// d变量是long类型,小容量可以自动赋值给大容量,自动类型转换
		long d = 2147483647; // 2147483647是int最大值。
		System.out.println(d);

		// 编译器报错
		// 在java中,整数型字面量一上来编译器就会将它看做int类型
		// 而2147483648已经超出了int的范围,所以在没有赋值之前就出错了。
		// 记住,不是e放不下2147483648,e是long类型,完全可以容纳2147483648
		// 只不过2147483648本身已经超出了int范围。
		// 错误: 整数太大
		//long e = 2147483648;

		// 怎么解决这个问题呢?
		long e = 2147483648L;
		System.out.println(e);

1、小容量可以直接赋值给大容量,称为自动类型转换。

2、大容量不能直接赋值给小容量,需要使用强制类型转换符进行强转。
但需要注意的是:加强制类型转换符之后,虽然编译通过了,但是运行
的时候可能会损失精度。

3、java中有一个语法规则:
当这个整数型字面量没有超出byte的取值范围,那么这个
整数型字面量可以直接赋值给byte类型的变量。

4、byte、char、short做混合运算的时候,各自先转换成int再做运算。

5、多种数据类型做混合运算的时候,最终的结果类型是“最大容量”对应的类型。char+short+byte 这个除外。因为char + short + byte混合运算的时候,会各自先转换成int再做运算。

6、转义字符\t,\n,\

// 0如果加上单引号的话,0就不是数字0了,就是文字0,它是1个字符。
		char c3 = '0';
		System.out.println(c3);

		// 错误: 不兼容的类型: String无法转换为char
		//char c4 = "a";

		// 错误: 未结束的字符文字
		//char c5 = 'ab';

		// 根据之前所学,以下代码应该报错。
		// 经过测试以下代码 \t 实际上是1个字符,不属于字符串
		// 两个字符合在一起表示一个字符,其中 \t 表示“制表符tab”
		char c2 = '\t'; //相当于键盘上的tab键

7、char x = 97;
这个java语句是允许的,并且输出的结果是’a’
经过这个测试得出两个结论:
第一个结论:当一个整数赋值给char类型变量的时候,会自动转换成char字符型,
最终的结果是一个字符

第二个结论:当一个整数没有超出byte short char的取值范围的时候,
这个整数可以直接赋值给byte short char类型的变量。

8、浮点型数据默认是double类型,float类型数据后面要加f

运算符

基本赋值运算符和拓展赋值运算符的区别

//结论:x += 1 和 x = x + 1不一样。
// 研究:
		// i += 10 和 i = i + 10 真的是完全一样吗?
		// 答案:不一样,只能说相似,其实本质上并不是完全相同。
		byte x = 100; // 100没有超出byte类型取值范围,可以直接赋值
		System.out.println(x); // 100

		// 分析:这个代码是否能够编译通过?
		// 错误: 不兼容的类型: 从int转换到byte可能会有损失
		//x = x + 1; // 编译器检测到x + 1是int类型,int类型可以直接赋值给byte类型的变量x吗?

		// 使用扩展赋值运算符可以吗?
		// 可以的,所以得出结论:x += 1 和 x = x + 1不一样。
		x += 1;// 其实 x += 1 等同于:x = (byte)(x + 1);
		System.out.println(x); // 101

		// 早就超出byte的取值范围了。
		x += 199; // x = (byte)(x + 199);
		System.out.println(x); // 44 (当然会自动损失精度了。)
  • 运算符:
    1、+ 运算符在java语言中有两个作用。
    作用1:求和
    作用2:字符串拼接

    ​ 2、什么时候求和?什么时候进行字符串的拼接呢?
    ​ 当 + 运算符两边都是数字类型的时候,求和。
    ​ 当 + 运算符两边的“任意一边”是字符串类型,那么这个+会进行字符串拼接操作。

    ​ 3、一定要记住:字符串拼接完之后的结果还是一个字符串。

    控制语句

switch(值){
case 值1:
java语句;
java语句;…
break;
case 值2:
java语句;
java语句;…
break;
case 值3:
java语句;
java语句;…
break;
default:
java语句;
}
以上是一个完整的switch语句:
其中:break;语句不是必须的。default分支也不是必须的。

	switch语句支持的值有哪些?
		支持int类型以及String类型。
		但一定要注意JDK的版本,JDK8之前不支持String类型,只支持int。
		在JDK8之后,switch语句开始支持字符串String类型。

		switch语句本质上是只支持int和String,但是byte,short,char也可以
		使用在switch语句当中,因为byte short char可以进行自动类型转换。

		switch语句中“值”与“值1”、“值2”比较的时候会使用“==”进行比较。
for(;;){
			System.out.println("死循环");
		}

// i变量的作用域就扩大了。
		int i = 0;
		for(;i < 10;i++){
			System.out.println("i --> " + i); // 0 1 2 3....9
		}

// 变形
		for(int k = 1; k <= 10; ){
			System.out.println("k --> " + k); 
			k++;
		}


  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java Lover

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值