文章目录

  • 1. Java 跨平台性
  • 2. JVM与垃圾收集机制
  • 3. jdk , jre , jvm关系
  • 4. 编译过程
  • 5. 注释
  • 5.1 注释分类
  • 5.2 文档注释
  • 6. Java API 文档
  • 7. Java 注意事项一
  • 8. 关键字和保留字
  • 8.1 关键字
  • 8.2 保留字(reserved word)
  • 9. 标识符 和 命名规则
  • 9.1 标识符(identifier)
  • 9.2 命名规则
  • 10. 变量
  • 11. Java的 数据类型
  • 12. 整型类型byte,short,int,long
  • 13. 浮点类型 float,double
  • 14. 字符型 char
  • 15. 字符集乱码详情
  • 15.1 ASCII码
  • 15.2 Unicode编码
  • 15.3 UTF - 8编码
  • 16. 布尔型 boolean
  • 17. 自动类型提升
  • 18. 强制类型转换
  • 18.1 强制类型转换
  • 18.2 强制类型转换的两个问题
  • 18.2.1 不加f 或者 不加l 问题一
  • 18.2.2 常量和类型 问题二
  • 19. String 字符串类型
  • 19.1 String 字符串介绍
  • 19.2 char,数字,String(字符床) 之间的运算
  • 20. 进制
  • 21. 二进制 八进制 十六进制 的转换
  • 22. Java中的volatile关键字


1. Java 跨平台性

跨平台性,为什么java能跨平台?

因为我们提供了不同操作系统的JVM版本。

java知识点网盘 java基础知识点_Java

2. JVM与垃圾收集机制

java知识点网盘 java基础知识点_java_02


java知识点网盘 java基础知识点_Java_03

3. jdk , jre , jvm关系

java知识点网盘 java基础知识点_后端_04


java知识点网盘 java基础知识点_java_05

4. 编译过程

java知识点网盘 java基础知识点_java知识点网盘_06


一定注意我们平时通过javac命令编译后得到的.class文件就是字节码文件,字节码文件再运行便是结果。

java知识点网盘 java基础知识点_java_07

5. 注释

5.1 注释分类

单行注释://
多行注释:/* xxx */
文档注释:它是Java特有的。

5.2 文档注释

文档注释:

java知识点网盘 java基础知识点_java知识点网盘_08


javadoc命令:

javadoc -d 生成文件的名称 -author -version demo1.java

java知识点网盘 java基础知识点_Java_09


我们就可以在生成的name文件中,打开index.html就可以看到相关内容了

java知识点网盘 java基础知识点_Java_10


注意:javadoc只能解析文档注释,多行单行注释都不可以。

6. Java API 文档

https://www.oracle.com/cn/java/technologies/java-se-api-doc.html

7. Java 注意事项一

在一个java源文件中可以声明多个class。但是,只能最多有一个类声明为public的。而且要求声明为public的类的类名必须与源文件名相同。

程序的入口是main()方法,这是固定的。

常见的几个文本编译工具:(了解就可)

java知识点网盘 java基础知识点_字符串_11

常用的Java集成开发环境(IDE):

java知识点网盘 java基础知识点_字符串_12

8. 关键字和保留字

8.1 关键字

java知识点网盘 java基础知识点_后端_13


java知识点网盘 java基础知识点_后端_14

需要注意的是:关键字中所有字母都为小写。

8.2 保留字(reserved word)

java知识点网盘 java基础知识点_字符串_15

9. 标识符 和 命名规则

9.1 标识符(identifier)

java知识点网盘 java基础知识点_字符串_16


标识符的命名规则需要注意!!命名规则非常严格,不能马虎。

9.2 命名规则

java知识点网盘 java基础知识点_java_17


学了这么多语言,Java的命名方式最复杂。。。不过习惯了自然而然,就会不自觉用到。

这里因为java采用unicode字符集,因此标识符也可以使用汉字声明,但不建议使用!!

10. 变量

格式定义:数据类型 变量名 = 变量值;

java知识点网盘 java基础知识点_java_18


java知识点网盘 java基础知识点_字符串_19

11. Java的 数据类型

java知识点网盘 java基础知识点_java知识点网盘_20


在java中,字符串是属于类(class)类型!!

12. 整型类型byte,short,int,long

java知识点网盘 java基础知识点_Java_21


对面上面需要记住的:

byte的范围: -128 ~ 127
定义long型变量,必须以 l 或 L结尾。

1 个 byte(字节) = 8 bit;
1 个  short = 2 byte;
1 个 int = 4byte;
1 个 long = 8byte;

13. 浮点类型 float,double

float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。1个float = 4 byte; float型常量,须在后面加上 f 或 F 。

double:双精度,精度是float的两倍。通产采用此类型。1 个 double = 8byte;

java知识点网盘 java基础知识点_java知识点网盘_22


注意:单精度float表示数值的范围比long还要大。double比float的数值大。

14. 字符型 char

1个字符 = 2 byte;

定义char型变量,要使用一对 ’ ’ (单引号),切记不要使用" “双引号来定义,” "双引号默认是字符串格式。

字符型char定义时,内部只能写一个字符。

除了能定义一个字符,一个汉字,一个数字等等,还可以定义转义字符(例如: \n) 。

char定义也可以用Unicode编码表示,来定义一个字符,汉字等等。

15. 字符集乱码详情

15.1 ASCII码

ASCII码很重要,一定了解。

java知识点网盘 java基础知识点_Java_23

15.2 Unicode编码

java知识点网盘 java基础知识点_Java_24

15.3 UTF - 8编码

UTF-8,推荐使用。

java知识点网盘 java基础知识点_java_25


注意事项如下:

java知识点网盘 java基础知识点_java_26

16. 布尔型 boolean

java知识点网盘 java基础知识点_java_27

17. 自动类型提升

自动类型提升

这里是按照范围容量来说的:(范围小的类型转为范围大的类型)

byte,short,char --> int --> long --> float --> double
注意事项:当byte,char,short三种类型的变量做运算时,结果为int类型。

最需要注意的是:1个float = 4个byte,1个long = 8个byte,但float的范围容量是比long要大的,很多人容易混淆这个事情。

结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。

源码:

/**
	@author holmes
	@version v1.0

	这是我写的一个文档注释。
*/

class HelloChina{
	/** 
		必须给类定义一个文档注释。
	*/
	public static void main(String[] args){
		byte b1 = 2;
		int i1 = 129;
		
		//编译不通过,因为int转byte,byte范围很小,非常容易溢出。
		//byte b2 = b1 + i1;
		
		int i2 = i1 + b1; //byte转int 
		System.out.println(i2);

		long l1 = b1 + i1; //byte,int转long
		System.out.println(l1);

		float f1 = b1 + i1 + l1; //byte,int,long 转float
		System.out.println(f1);

		double d1 = b1 + i1 + l1 + f1; //byte,int,long,float 转double
		System.out.println(d1);

		char c1 = 'a';
		short s2 = 10;
		//char c3 = c1 + s2; 编译不通过,返回结果int
		//short s3 = c1 + s2;  编译不通过,返回结果int
	}
}

再次提醒一下:当byte,char,short三种类型的变量做运算时,结果为int类型。

java知识点网盘 java基础知识点_java_28

18. 强制类型转换

18.1 强制类型转换

强制类型转换相当于自动类型提升的逆运算。

需要使用强转符 :
(强转类型)变量

但是强制类型转换,可能导致精度损失。

例如:
因为double转为了int类型,数值上肯定丢失,这个过程叫损失精度。

double d1 = 12.91;
int i1 = (int)d1; //截断操作
System.out.println(i1); //因为double转为了int类型,数值上肯定丢失,这个过程叫损失精度。

注意:String字符串不能这么操作,(String)xxx这是错误的!

18.2 强制类型转换的两个问题

18.2.1 不加f 或者 不加l 问题一

float 和 long 一定要加 f 和 l ,不加会默认为int类型。

class  demo{
	public static void main(String[] args) 
	{
		long l = 123123;
		System.out.println(l);

		//编译失败:过大整数
		//long l1 = 21323234534234234; //因为这里没有加l,默认给他定义为了int,超过了int范围容量。

		long l1 = 21323234534234234l; //这样就没问题了
		System.out.println(l1);

		//同样float也是一样的,一定要加f,不然就是范围大的往范围小的转了
		float f1 = 12.3f;
	}
}

18.2.2 常量和类型 问题二

整型常量,默认类型为int型。
浮点型常量,默认类型为double型。

意思就是我们再定义常量和不同类型加减的话,也是要遵循上面这两条的规则,见下面注释。

class  demo{
	public static void main(String[] args) 
	{
		byte b = 12;
		//byte b1 = b + 1; //这里1为整型常量,默认为int,所以不能转为byte,只能转int类型,报错。
		//byte b2 = b + 12.3; //这里12.3为浮点型常量,默认类型为double类型,只能转double类型,因此报错。
	}
}

19. String 字符串类型

19.1 String 字符串介绍

  • String不是基本数据类型,属于引用数据类型。
  • 只不过字符串的使用方式与基本数据类型一直。
  • 一个字符串可以串接到另一个字符串,也可以直接串接其他类型的数据。
  • 声明字符串要用一对" "双引号来表示。例如:String s = 123; //这里就是严重错误!
  • char和string没关系,但是char定义是一对’ '单引号,而且定义单引号里面必须有一个数值,少了多了都不可以。例如:
char c = '';  //错误,什么都没传入的char就会报错。
//什么都没错编译错误,传入个空格都可以
char c = ' ';  //哪怕传入个空格,也不会报错。
  • String 可以和8种基本数据类型变量做运算,且运算只能是连接运算: + ,而且 + 运算后,整体上就变成了字符床类型。

19.2 char,数字,String(字符床) 之间的运算

这里一定记住一下a:97 , A:65 对应的ASCll码。

char , 数字 ,String(字符床) 之间的运算。
案例1:

class  demo1{
	public static void main(String[] args) 
	{
		char c = 'a';  //这里一定记住一下a:97 , A:65  对应的ASCll码。
		int num = 10;
		String str = "hello";
		System.out.println(c + num + str); //107hello
		System.out.println(c + str + num); //ahello10
		System.out.println(str + num + c); //hello10a
	}
}

有上面运算可得知,它是从左到右的一个运算,判断好是那种类型的运算,字符串和字符,字符和数值,数值和字符串等等。

案例2: (其中 * 的AscII码为42,’\t’的AscII码为9)

java知识点网盘 java基础知识点_后端_29


如果我们将int或者其他类型数据转换为字符串怎么转换呢?

其实,通过上面就已经得到了启发。具体方法如下:

java知识点网盘 java基础知识点_Java_30

此外,我们用"" + num这种形式来转为字符串的话,最好""这个空字符串放到开头,因为放到开头他后面所有就不会进行一些运算操作,都会转为字符串!

20. 进制

对于进制,记好4个进制和它们的规则即可。

java知识点网盘 java基础知识点_java知识点网盘_31

21. 二进制 八进制 十六进制 的转换

二进制结构如下:

java知识点网盘 java基础知识点_java_32


原码,反码,补码。整数和负数变换不同。如下:

下图的负14,就是在正14的符号位修改为了1,得到的。

java知识点网盘 java基础知识点_后端_33


总结:

java知识点网盘 java基础知识点_后端_34


注意:计算机以二进制补码的形式保存所有的整数。因此,在涉及一些进制运算时,要先判断它的正负,然后推出原码来计算。

java知识点网盘 java基础知识点_Java_35

-128,这个数字的补码,很诡异,记住就行。

java知识点网盘 java基础知识点_字符串_36

十进制转二进制:

一句话:除2取余,取逆数。

java知识点网盘 java基础知识点_字符串_37

二进制和八进制,16进制转换

二进制转换八进制,16进制。

java知识点网盘 java基础知识点_后端_38


八进制,16进制转换二进制。

java知识点网盘 java基础知识点_后端_39

22. Java中的volatile关键字


Java中的volatile关键字的作用很简单,就是一个线程在对主内存的某一份数据进行更改时,改完之后会立刻刷新到主内存。并且会强制让缓存了该变量的线程中的数据清空,必须从主内存重新读取最新数据。这样一来就保证了可见性