JAVA笔记

1.重写和重载

重写是发生在两个类(子类与父类之间),,子类重写父类的方法,,方法名与父类的方法名保持一致,只是参数名或者参数类型不同罢了

重载是发生在一个类中,一个类中有两个或多个,方法名相同,且参数类型或参数个数不同的方法。

2.线程

实现线程的方式有两种

1)继承Thread 类

public class ThreadCreateDemo1 {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start(); //该方法调用多次,出现IllegalThreadStateException
    }
}

class MyThread extends Thread {
    @Override
    public void run() {
        super.run();
        System.out.println("hellow_world!");
    }
}

2)实现Runnable接口

public class ThreadCreateDemo2 {
    public static void main(String[] args) {
        Runnable runnable = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

class MyRunnable implements Runnable {
    public void run() {
        System.out.println("通过Runnable创建的线程!");
    }
}

当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。但是这并不意味着线程就会立即运行。只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法。start()是方法,它调用run()方法.而run()方法是你必须重写的. run()方法中包含的是线程的主体

继承Thread类实现方式
public class ThreadTest {
   public static void main(String[] args) {
        MyThread t =new MyThread();
        t.start();
    }
}
 
class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println("Hello World!");
    }
}
实现Runnable接口实现方式
public class ThreadTest {
      public static void main(String[] args) {
        Thread t =new Thread(new MyRunnable());
        t.start();
    }
}
 
class MyRunnable implements Runnable{
    @Override
    public void run() {
        System.out.println("Hello World!");
    }
}

线程就先说这么多吧,,里面还有很多,,以后慢慢了解

3.Java 中 关于ResultSet 接口

这结果是jdbc获取查询东西时用的接口。 他那个下标是从一开始的。增删改的时候,他返回值就是一个数字,就是影响了几行。没必要用这个接口也不能用。

4.关于构造方法

1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

2.每个类可以有一个以上的构造器

3.构造器可以有0个、1个或1个以上的参数

4.构造器没有返回值

5.构造器总是伴随着new操作一起调用

6.子类不能重写父类的构造方法,但是子类中的构造方法首先默认会调用父类的无参构造方法,,父类中有参的构造方法可以手动调用。

7.构造方法无需显示调用,,这里我解释一下,创建对象时,就直接能调用构造方法了,,所以是不需要像调用其他方法一样去调用构造方法的。

5.数组

数组是一个对象,,只有8大基本数据类型才是类  boolean, byte, short, char, int, long, float, double

数组一但背初始化后 长度就是固定的,数组既可以存放基本数据类型,又可以存放引用数据类型,,总的来说,就是数组只能存放相同类的东西,

例 int []  = new int [3];   

  Dog [] = new Dog[2];      (解释: 这里事先需要有 Dog类 ,而且这个数组只能存放Dog类)

6.集合

  1. Collection接口的子接口包括:Set接口和List接口
  2. Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等
  3. Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等
  4. List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等

1.List 关心的是索引  Arraylist底层是数组结构,LinkedList底层是链表结构

2.Set 关心唯一性,他不允许重复

3.Map 关心的是唯一标识符(key);

7.异常

1.error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
 final, finally, finalize的区别?
final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等(在垃圾回收的时候会调用被回收对象的此方法)

8.类的向上/向下转型

 

向上转换:

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型可自动转换为容量大的数据类型;

byte,short,char → int → long → float → double

byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。

boolean 类型是不可以转换为其他基本数据类型。

Eg:

int i = 123;

long l = i;       //自动转换,不需强转

float f = 3.14F;

double d = f;

 

向下转换:

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型可自动转换为容量大的数据类型;

byte,short,char → int → long → float → double

byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。

boolean 类型是不可以转换为其他基本数据类型。

Eg:

long l = 123L;

int i = (int) l;//必须强转

double d = 3.14;

float f = (float) d;

 

我的总结:类型转化

小转大,自动!自动类型转换(也叫隐式类型转换) 

大转小,强转!强制类型转换(也叫显式类型转换)

 

9.Java中super() 关键字

在子类继承父类中,一般有一行super的语句,需要记住三种使用方法:

1、super.变量/对象名;
使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作

2、super.方法名();
直接访问并调用父类中的方法

3、super();
调用父类的初始化方法,其实就是调用父类中的public xxx()方法,通常第三种指代的是super()的省略写法,系统会默认添加此句。
特殊情况:如果父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数,即不能使用系统默认的“super()”,而需要显性写出super(xxx)

 

posted @ 2020-01-05 15:55  tomcat9  阅读(170)  评论(0)    收藏  举报