JavaSE基础学习笔记

前言

在有一定Java知识的基础上对知识点进行查缺补漏,仅记录部分要点。


面对对象:以类的方式组织代码,以对象的方式封装数据。

一、变量

  • 类变量
  • 实例变量
  • 局部变量

在这里插入图片描述

二、Scanner对象

next()和nextLine()的区别:
在这里插入图片描述
scanner.close();
用完就关
scanner.hasNextInt();//判断是否有整数

scanner 是属性
scanner.hasNextInt();//判断是否输入整数
scanner.hasNextFloat();//判断是否输入小数

三、for循环

增强for循环

for(声明语句 :表达式){
	//代码句子
}
  //遍历数组元素
  for ( int x : numbers ){
  		System.out.println(x);
  }

四、可变参数

方法传递的参数可以有多个值
在这里插入图片描述

在这里插入图片描述
输出结果:
输出

五、静态方法和非静态方法

  • 静态方法可以用类名调用
  • 非静态方法用实例对象调用

被static修饰的内容会跟随类的加载而加载,所以静态化内容可以不用实例化就可以调用,同时,静态方法之间可以互相调用;非静态方法类实例化后才存在。

六、构造器

注意:定义了有参构造之后,想使用无参构造,需要显示地定义一个无参的构造。 默认类是有无参构造器的,如果定义了有参构造器,无参构造器就不存在了,所以需要重新定义。

七、Java内存分配

  • 方法区:字节码文件加载时进入内存
  • 栈内存:方法运行时所进入的内存,变量也在这里
  • 堆内存:new出来的东西会在这块内存中开辟空间并产生地址

栈里存放地址值,指向堆中的地址,堆里存具体的值(比如属性值)
在这里插入图片描述

八、方法重写

非静态方法才能重写,子类不能继承父类的静态方法,只是共享(只有一份),可以直接使用。
1、子类继承父类静态方法:
在这里插入图片描述
输出结果:
在这里插入图片描述
2、子类继承父类非静态方法重写:
在这里插入图片描述
输出结果:和静态方法结果相反
在这里插入图片描述

九、多态

同一个方法可以根据发送对像的不同而采用多种不同的行为方法。

  • 多态是方法的多态,属性没有多态
  • 多态存在条件:继承关系,方法需要重写,父类引用指向子类
    ( person是student的父类)
//父类引用指向子类
Student s1 = new Student();
Person s2 = new Student();

//对象能执行哪些方法,主要看对象左边类型,和右边关系不大
s2.run();	//子类重写了父类的方法,执行了子类 的方法
s2.eat();	//eat()是子类的方法,父类没有,所以报错

注意:

1. static方法不能重写
2. final 常量不能重写
3. private 方法不能重写

十、instanceof 和类型转换

X instanceof Y 是否true取决于X和Y存不存在父子关系;
在这里插入图片描述
类型转换:
子类转父类,可能丢失一些自己的方法;
父类转子类,需要强制转换;
在这里插入图片描述

十一、抽象类

1. 不能new抽象类,只能靠子类去实现它:约束!
2. 抽象类中可以写普通的方法
3. 抽象方法必须在抽象类中
4. 抽象类不能创造对象,抽象方法没有方法体

十二、内部类

1、成员内部类

在这里插入图片描述

2、静态内部类

报错:因为内部类比属性先实例化(内部类比属性先出生,所以获取不到属性)
在这里插入图片描述

3、匿名内部类

格式:
new 类|抽象类名|接口名(){
重写方法;
};

十三、异常

在这里插入图片描述
Error异常:
在这里插入图片描述
在这里插入图片描述

捕获异常关键字:try、catch、finally、throws、throw
捕获多个异常,从小到大
e.printStackTrace(); //打印错误信息

public class Error {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;

        try{    //try监控区域,监控此区域的代码是否出现异常
            System.out.println(a/b);
        }catch (ArithmeticException e){ //捕获异常
            System.out.println("出现异常,变量b不能为0");
        }finally {  //处理善后工作,无论是否有异常都执行
            System.out.println("finally");
        }
    }
}


        if (b==0){
            throw new ArithmeticException();   //主动抛出异常,一般在方法中使用
        }

posted on 2022-08-03 17:05  知七。  阅读(47)  评论(0)    收藏  举报