java学习笔记

java学习笔记_第1张图片
java学习笔记_第2张图片
java学习笔记_第3张图片
java学习笔记_第4张图片
形式参数可被视为local variable

在这里插入图片描述
java学习笔记_第5张图片
java学习笔记_第6张图片
jvm中垃圾回收分为scanvenge gc和full GC,其中full GC触发的条件可能有哪些
1,新生代:(1)所有对象创建在新生代的Eden区,当Eden区满后触发新生代的Minor GC,将Eden区和非空闲Survivor区存活的对象复制到另外一个空闲的Survivor区中。(2)保证一个Survivor区是空的,新生代Minor GC就是在两个Survivor区之间相互复制存活对象,直到Survivor区满为止。
2,老年代:当Survivor区也满了之后就通过Minor GC将对象复制到老年代。老年代也满了的话,就将触发Full GC,针对整个堆(包括新生代、老年代、持久代)进行垃圾回收。
3,持久代:持久代如果满了,将触发Full GC。

java取整函数floor round ceil
分别是向下取整,+0.5向下取整,向上取整
java学习笔记_第7张图片

java学习笔记_第8张图片
如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;

如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载;

就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
java学习笔记_第9张图片

要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:

检查性异常:

最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

运行时异常:

运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

错误:

错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

java学习笔记_第10张图片

java学习笔记_第11张图片
java学习笔记_第12张图片

java学习笔记_第13张图片
java学习笔记_第14张图片
java学习笔记_第15张图片
类的继承

class SuperClass {
  private int n;
  SuperClass(){
    System.out.println("SuperClass()");
  }
  SuperClass(int n) {
    System.out.println("SuperClass(int n)");
    this.n = n;
  }
}
// SubClass 类继承
class SubClass extends SuperClass{
  private int n;
  
  SubClass(){ // 自动调用父类的无参数构造器
    System.out.println("SubClass");
  }  
  
  public SubClass(int n){ 
    super(300);  // 调用父类中带有参数的构造器
    System.out.println("SubClass(int n):"+n);
    this.n = n;
  }
}
// SubClass2 类继承
class SubClass2 extends SuperClass{
  private int n;
  
  SubClass2(){
    super(300);  // 调用父类中带有参数的构造器
    System.out.println("SubClass2");
  }  
  
  public SubClass2(int n){ // 自动调用父类的无参数构造器
    System.out.println("SubClass2(int n):"+n);
    this.n = n;
  }
}
public class TestSuperSub{
  public static void main (String args[]){
    System.out.println("------SubClass 类继承------");
    SubClass sc1 = new SubClass();
    SubClass sc2 = new SubClass(100); 
    System.out.println("------SubClass2 类继承------");
    SubClass2 sc3 = new SubClass2();
    SubClass2 sc4 = new SubClass2(200); 
  }
}

在这里插入图片描述
运行结果
java学习笔记_第16张图片
注释掉class2里的super后
java学习笔记_第17张图片

java学习笔记_第18张图片

java学习笔记_第19张图片

java抽象类:

必须被继承
不能实例化对象
其它功能依然存在
使用abstract class来定义抽象类

Abstract 关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。
抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
在这里插入图片描述

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

子类一定会调用父类的构造器。

Collection是java.util下的接口,它是各种集合结构的父接口
Collections是java.util下的类,它包含有各种有关集合操作的静态方法

java学习笔记_第20张图片

java字符串可以和数字相加,结果是字符串连接

java学习笔记_第21张图片
java学习笔记_第22张图片
java学习笔记_第23张图片

一个线程执行的过程有三个阶段:
加载(复制)主存数据到操作栈 -->  对操作栈数据进行修改  --> 将操作栈数据写回主存
volatite关键字,让编译器不去优化代码使用缓存等,以保证线程在“加载数据阶段”加载的数据都是最新的

Java中静态变量只能在类主体中定义,不能在方法中定义。 静态变量属于类所有而不属于方法。

你可能感兴趣的:(笔记)