⭐代码和思维导图详见仓库:Sivan_Xin的代码仓库—Java语法。如果觉得有帮助的话,可以帮作者点一个star⭐哦~
🎉 关于Java语法部分的知识体系主要分三篇文章进行讲解:
🎉【基础语法篇】【面向对象篇】【高级语法篇】
🎉大家可以在日常的学习生活中进行参考,笔记内容并不是绝对权威,所以请保持自己独立思考的能力。
本文共5600字,读完约需12分钟。

JDK:jdk是java软件开发工具包,包含jre和JAVA工具。
JAVA工具:
javac:JAVA编译器(程序—字节码);
java:JAVA解释器(解释编译后的字节码文件);
jdb:JAVA调试器;
javadoc:文档生成器。
jre:
JAVA运行环境,包括jvm和系统类库等。
ps:本文使用JDK8的版本。
.是一个运算符,它可以让类或者对象做事情,看不懂也没有关系,可以先记下来。从输出设备(显示屏)输出:
System.out.println("Hello World"); //换行输出
System.out.print("Hello World"); //普通输出
System.out.printf("%.2f",a); //对结果取2位小数输出
System.out.println("2+3="+(2+3)); // +用来连接字符串
从输入设备(键盘)输入:
Scanner in = new Scanner(System.in); //关于这句话,会在面向对象篇详细介绍。
in.nextInt(); //读入 一个int型的数据。
in.nextDouble(); //读入 一个double型的数据。
in.nextLine() //读入 一行。
in.next(); //读入 获取有效字符到结束字符之间的内容。
in.hasNext(); //判断是否有输入数据,如果有,则返回true,并将所输入的数据读取备用。
in.hasNextInt(); //判断输入的数据是否为int,如是返回true,不是返回false。
if-else for do-while while switch-case 语句跳出多重循环 —标号的使用:
OUT: //标号,说明下面的循环叫这个名字。
for(int i=1;i<10;i++) {
for(int j=1;j<10;j++) {
break OUT; //跳出OUT标号的循环
}
}
增强for循环(for—each):
不可以拿来修改数组的值,但是可以拿来做遍历。
for(<类型> <类型名称>:<数组>) {}
//使用for—each循环遍历数组:
for(int i:a){ //循环的每一轮,让i等于a数组中的值。依次向下。
System.out.print(i+" ");
}
< 类型 > [ ] < 变量名称 > = new int [ 元素个数 ];
int [] a = new int [10] ,就创建了一个有10个元素的数组。<数组变量名称.length> 扩展:
数组之间的赋值就是管理权限的赋予。
public static void main(String[] args) {
int []a={1,2,3};
int []b={1,2,3};
if(a.equals(b)){
System.out.println("1");
}
if(a==b){
System.out.println("2");
}
a=b; //赋予管理权限。
if(a.equals(b)){
System.out.println("a");
}
if(a==b){
System.out.println("b");
}
}
输出结果:a
b
在java中,数组变量与其他普通变量不同,数组变量充当一个管理者,管理存放数组的那个区域。
二维数组:
int [] []a =new int [3][5]; ,可以理解为三行五列的矩阵。int [][]a={{1,2,3},{1,2,3}};扩展:
public class demo {
public static void main(String[] args) {
int [][]a=new int[11][11];
a[1][2]=2;
a[2][3]=1;
//法一
for(int []row: a){
for(int date:row){
System.out.printf("%d\t",date);
}
System.out.println();
}
//法二
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length;j++){
System.out.printf("%d\t",a[i][j]);
}
System.out.println();
}
}
}
在Java中,调用函数又叫调用方法。这里只介绍Java中最简单的使用函数语法。
/*函数定义*/
public static void main (int a,int b){ 函数体 }
访问修饰符 修饰关键字 函数类型 函数名称 参数表
/*函数调用*/
函数名(a,b);
一些补充:
/* 布尔类型 */
boolean isprime = true;
if(isprime){
......
}
/* 逻辑运算的结果是true/false。 */
/*浮点数运算误差*/
double a=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
double b=1.0;
System.out.println(a==b); //a=0.999999...
//判断两浮点数是否相等。
System.out.println(Math.abs(a-b)<1e-6); //abs为取绝对值。
Java为每一个普通类型都提供了一个包裹类型。因为在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。
所有的包装类 (Integer、Long、Byte、Double、Float、Short) 都是抽象类 Number 的子类。

| 基础类型 | 包裹类型 |
|---|---|
| boolean | Boolean |
| char | Character |
| int | Integer |
| double | Double |
| float | Float |
Integer类型的缓存
Integer类型在-128到127之间的范围被缓存,如果创建这个范围的两个值相同的对象,每个对象地址相同,但是超过127,会重新new一个对象,此时每个对象地址不相同。
包装类的API
API详见:包装类API文档
Math:
Java 的 Math 包含了用于执行基本数学运算的属性和方法。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
Arrays类经常用于对数组的操作中。
String不是基础类型,它是java提供的一个类。String与数组类似,作为管理者管理数据。
String s1=new String("123");
String s2=new String("123");
//判断两个String是否是同一地址:s1==s2 false
//判断两个String的内容是否相同:s1.equals(s2) true
String类中重写了equals方法,所以比较的是内容。
更多详细情况请参考下面的文章: 浅谈Java中的内存
自己可以去JDK的官方文档中去了解,这里举出一些常用的类。
Java中所有的类都是从Object继承的,也就是所有类的父类。进而可知,所有其他类都可以使用/重写Object类的方法。
toString方法,用来显示对象的字符串形式。equal()方法,在Object类中的equals方法只是简单地比较地址是否相等。hashCode()方法,一般在HashMap中重写,如果自定义类使用了HashMap,那么它也需要重写hashCode。clone()方法:clone 方法是浅拷贝,对象的引用类型引用同一个对象,而不会将引用的对象重新分配内存,相对应的深拷贝则会连引用的对象也重新创建。Java语言执行中发生的不正常的情况称为异常。
在Throwable异常下分为两种:
运行时异常:
ArrayIndexOutOfBoundsException 用非法索引访问数组时抛出的异常。NullPointerException 当应用程序试图在需要对象的地方使用 null 时,抛出该异常。NumberFormatException 数据格式异常ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常。编译时异常:
FileNotFoundException:表示尝试打开由指定路径名表示的文件失败。过程一:“抛”。程序执行中若碰到异常,就会在异常代码处生成对应异常类的对象,并将对象抛出。
生成异常类的对象有两种方式:
过程二:“抓”。异常的处理方式。
处理异常有两种方式:
getMessage()和printStackTrace() 来返回异常信息。表示生成一个异常对象。
⭐码字不易,求个关注⭐
⭐点个收藏不迷路哦~⭐