Java学习笔记

JVM

JVM是java虚拟机,由于不同的客户端(如手机、笔记本、台式)有不同的芯片,同一段代码会被翻译成不同的机器指令,所以在没有JVM的时候,对于这些不同的客户端,需要编写不同的代码,就十分麻烦。那么我们可以通过JVM,达到编写一段代码,通过JVM处理,运行在不同客户端的效果。

JRE与JDK

Java学习笔记_第1张图片

快捷指令代码

可以在IDEA中查看

Java学习笔记_第2张图片

//main
public static void main(String[] args) {
        
}
//sout
System.out.println();


IDEA常用快捷键

  • CTRL+D:复制当前行
  • CTRL+R:查找并替换

静态代码块

  • 类的静态代码块

    类的信息加载完成后,会自动执行,可以用于静态属性的初始化功能

    class User{
        static{
            System.out.println("类的静态代码块执行")
        }
    }
    
    
  • 对象的静态代码块

    在对象创建时,自动执行,但不是静态的

    class User{
        {
            System.out.println("对象的静态代码块执行")
        }
    }
    

包Package

为了管理众多的类,使得相同的类名被区分,java引进了包。

Import

为了不用每次在使用类时,在类前面加入很长的包名,java有了import机制,通过使用import即可将对应的类导入。这个import也不用手动写,在idea里面可以通过alt+enter直接添加。

如果要引入一个包的大量类,可以用通配符*号,比如

import java.util.*

继承

关键字:extends

super、this

子类继承父类,在子类里面,如果子类的成员和父类的成员同名。可以用super访问父类的成员,用this访问子类成员。比如

super.name;
this.name;

构造函数和继承

子类的构造函数,会自动调用super(),super()对应父类无参的构造函数。但如果父类没有无参的构造函数,那么子类的构造函数中就得在super()中加上对应的参数。

重载

重载是指,方法名相同,参数列表不同,和返回值类型无关。

比如构造函数就是经典的重载,构造函数有无参的,也有有参的。

重写

重写的一大作用是:父类是模板类,为了子类能够在具体的不同场景下体现不同的功能。

类的访问权限

在java中,public类只能有一个,且类名必须和文件名相同。这个类是公有的,可以被任何访问。
对于没有加public的类,就不能被其他包访问,其具有包权限。

访问权限分为四种:

  • private:私有的,同一个类中可以使用
  • (default):默认权限,当不设定任何权限时,JVM会提供默认权限,包(路径)权限,注意:子包不可访问。
  • protected:受保护的权限,子类可以访问
  • public:公共的,任意使用

final

final修饰的变量在初始化后就不能被修改

abstract

修饰抽象类

interface

接口

enum

枚举,是一个特殊的类

匿名类

匿名类的好处就是不用对抽象类每次都创建一个具体的类,比如下面这个例子,如果我不使用匿名类的话,那么我每遇见一个不同名字的人,那么我就要为这个人创建一个具体的类,十分麻烦。

abstract class Person24{
    public abstract String name();
}
class Me{
    public void sayHello(Person24 person24){
        System.out.println("hello" + person24.name());
    }
}

me.sayHello(new Person24(){//这里就是匿名类
    public String name(){
        return "wangwu";
    }
});

object

object是所有类的父类,其有以下几个方法

  • obj.toString():将对象转换成字符串
  • obj.hashCode():获取对象的内存地址
  • obj.equals():判断两个对象是否相等
  • obj.getClass():获取对象的类型信息

包装类

由于基本数据类型,如int,double功能太单一,java提供了包装类,double就对应Double类,float就对应Float类。

异常

为了避免整个程序因为一个异常而直接中断,我们可以对异常进行处理,从而使整个程序顺利运行。

异常分为两类:

  • 可以通过代码恢复正常逻辑执行的异常,称之为运行期异常:RuntimeException

  • 不可以通过代码恢复正常逻辑执行的异常,称之为编译期异常:Exception

    比如说在编译的时候,编译器就会提示你要抛出异常,这个就是编译器异常。

如果方法中可能出现问题,那么需要用throws抛出异常,但如果这个异常是运行期异常,编译器不会提示你去抛出或处理。
对于这个方法抛出的异常,调用此方法的对象则需要将这个异常继续抛出或者是进行异常处理。

自定义异常

有些异常java并没有提供,这个时候可以自定义一个异常。比如说登录的时候密码错误这个异常,java没有提供,那么我们可以自定义这样一个异常。

class LoginException extends RuntimeException{
    public LoginException(String message){
        super(message)
    }
}

集合

Java学习笔记_第3张图片

你可能感兴趣的:(Java,java,学习,笔记)