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.集合
- Collection接口的子接口包括:Set接口和List接口
- Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等
- Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等
- 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)

浙公网安备 33010602011771号