【基础语法篇】Java必备基础(思维导图+代码)


在这里插入图片描述

⭐代码和思维导图详见仓库:Sivan_Xin的代码仓库—Java语法。如果觉得有帮助的话,可以帮作者点一个star⭐哦~

🎉 关于Java语法部分的知识体系主要分三篇文章进行讲解:
🎉【基础语法篇】【面向对象篇】【高级语法篇】
🎉大家可以在日常的学习生活中进行参考,笔记内容并不是绝对权威,所以请保持自己独立思考的能力。

本文共5600字,读完约需12分钟。
在这里插入图片描述

基本语法

初识JDK

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。

条件与循环

  • Java与C相同的地方
    if-else for do-while while switch-case 语句
    关于这些语句的用法,可以参考这篇文章:C语言学习必备笔记

跳出多重循环 —标号的使用

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>

扩展:
数组之间的赋值就是管理权限的赋予。

  • b得到a的管理权限实例
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常用类

Number&Math类

Java为每一个普通类型都提供了一个包裹类型。因为在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。
所有的包装类 (Integer、Long、Byte、Double、Float、Short) 都是抽象类 Number 的子类。
在这里插入图片描述

  • 装箱与拆箱
    这种由编译器特别支持的包装称为装箱,当数据类型被当作对象使用时,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置数据类型。
基础类型包裹类型
booleanBoolean
charCharacter
intInteger
doubleDouble
floatFloat
  • Integer类型的缓存
    Integer类型在-128到127之间的范围被缓存,如果创建这个范围的两个值相同的对象,每个对象地址相同,但是超过127,会重新new一个对象,此时每个对象地址不相同。

  • 包装类的API
    API详见:包装类API文档

Math:
Java 的 Math 包含了用于执行基本数学运算的属性和方法。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

Arrays类

Arrays类经常用于对数组的操作中。

String类

String不是基础类型,它是java提供的一个类。String与数组类似,作为管理者管理数据。

关于==和equals

String s1=new String("123");
String s2=new String("123");
//判断两个String是否是同一地址:s1==s2   false
//判断两个String的内容是否相同:s1.equals(s2)   true

String类中重写了equals方法,所以比较的是内容。

更多详细情况请参考下面的文章: 浅谈Java中的内存

其他类

自己可以去JDK的官方文档中去了解,这里举出一些常用的类。

Object

Java中所有的类都是从Object继承的,也就是所有类的父类。进而可知,所有其他类都可以使用/重写Object类的方法。

  • 常用的Object类的方法
  1. toString方法,用来显示对象的字符串形式。
  2. equal()方法,在Object类中的equals方法只是简单地比较地址是否相等。
    而多数Java类中实现了重写equals方法,使其比较内容是否相等。在比较两个对象是否相等时,一般使用equals方法,当然前提是对象所属的类已经重写equals了。
  3. hashCode()方法,一般在HashMap中重写,如果自定义类使用了HashMap,那么它也需要重写hashCode。
  4. clone()方法:clone 方法是浅拷贝,对象的引用类型引用同一个对象,而不会将引用的对象重新分配内存,相对应的深拷贝则会连引用的对象也重新创建。
    如果某一个类的成员变量不是原始变量(八大基本类型)或者不可变类(如String、包装类型),必须通过深度clone(生成一个不同于原对象成员变量的成员变量)来确保成员变量的不可变性。
    注意:使用clone方法要先实现Clonable接口,再重写Object中的clone。

异常处理

Java语言执行中发生的不正常的情况称为异常。
在Throwable异常下分为两种:

  • Error:Java虚拟机无法解决的严重问题。不编写针对的代码处理。
  • Exception:因编程错误或偶然的外在因素导致的一般性问题。可以用代码处理。Exception又分为编译时异常(IOException)和运行时异常(RuntimeException)

常见异常

运行时异常:

  • ArrayIndexOutOfBoundsException 用非法索引访问数组时抛出的异常。
  • NullPointerException 当应用程序试图在需要对象的地方使用 null 时,抛出该异常。
  • NumberFormatException 数据格式异常
  • ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常。

编译时异常:

  • IOException
    FileNotFoundException:表示尝试打开由指定路径名表示的文件失败。
  • SQLException

异常的处理

过程一:“抛”。程序执行中若碰到异常,就会在异常代码处生成对应异常类的对象,并将对象抛出。

生成异常类的对象有两种方式:

  1. 自动生成的异常对象。
  2. 手动生成一个异常对象,并throw。

过程二:“抓”。异常的处理方式。

处理异常有两种方式:

  1. try-catch-finally:真正解决异常。
  2. throws:向上抛出异常,但是没有处理。
    (具体操作在源程序中指出)
    处理异常的几点注意:
  • 在方法重写中,子类重写的方法抛出的异常不能大于父类被重写的方法抛出的异常。
  • 对于运行时异常一般不用try-catch。编译时异常才会使用try-catch。
  • 处理异常的方法getMessage()printStackTrace() 来返回异常信息。

throw

表示生成一个异常对象。

  1. 如果生成的是运行时异常对象,则在运行中直接抛出。
  2. 如果生成的是编译时异常对象,需要在方法中抛出,并且在main方法中捕获。

用户自定义异常类

  1. 自定义异常类需要继承父类Exception/RunTimeException。
  2. 自定义异常类需要一个ID作为标识。
  3. 自定义异常类一般需要两个构造器,一个无参,一个带参。

⭐码字不易,求个关注⭐
⭐点个收藏不迷路哦~⭐

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sivan_Xin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值