变量
1、局部变量
定义在方法或者语句块内的。从属于方法或者语句块。
使用之前必须要手动初试化。
2、成员变量
定义在类里面,方法外面,有默认的初试值。从属于对象。
数字:0 boolean :false char: \u0000 String :null
3、类变量(静态变量)
定义在类里面,方法外面,也有默认的初试值。
变量用static修饰的。从属于类。
数据类型:
1、基本数据类型
整数:byte short int long 分别占用1 2 4 8个字节。默认是int 类型。
浮点数:float double 4 8,浮点型默认是double类型。
字符:char 2个字节
布尔型:boolean 1位
2、引用数据类型(4个字节)
数组,数组也是对象。
接口
类
关于类型的转化。
1、byte short 可以自动转换成int。
如果有long 那结果就是long。
如果有double ,那结果就是double。
运算符:
1、算术运算符
2、关系运算符(==)
区别赋值运算符。
3、逻辑运算符
4、位运算符
<<左移一位相当于乘以2. >>右移一位相当于除以2.
5、扩展运算符
+= ++ -- 三木运算符()
(布尔表达式)?A :B
面向对象基础:
对象和类:
对象是具体的,类是抽象的。
定义类:
public class 类型{
//属性
private 数据类型 属性名;
//方法
//构造方法
}
构造方法:
1、方法名必须和类型一样。
2、无返回值类型
3、通过new 来调用。
4、无参构造器的问题。
如果我们没有手动定义构造器,那么系统会给我们定义一个无参构造器。
我们定义了,那么无参构造器就会被覆盖。
5、构造方法的第一句总是super,也就是说直接调用父类的方法。
overload
两同三不同:
两同:统一个类,同一个方法名字
三不同:参数列表不同(类型 个数 顺序),方法内容不同,
返回值类型不同,不构成重载。
形参名称不同,不构成重载。
this:本类
1) this 关键字可以用来访问本类的属性、方法、构造器
2) this 用于区分当前类的属性和局部变量
3) 访问成员方法的语法:this.方法名(参数列表)
4) 访问构造器语法:this(参数列表); 注意只能在构造器中使用(即只能在构造器中访问另外一个构造器, 必须放在第一 条语句)
5) this 不能在类定义的外部使用,只能在类定义的方法中使用。
super :
访问父类的方法属性和构造器。
static:
用它修饰类和方法,就那就变成了静态变量或者静态方法。从属于类,通过类名调用即可。
实际存储由于方法区中。
import:
引入外部的类。
final:
修饰变量:变量最好应该全部大写,多个单词之间用下划线隔开。
修饰方法:不能被重写。
修饰类:不能被继承。
封装:
private public default protected 用上述的关键字实现属性或者方法的封装。
继承:
extends :
通过继承实现对现实世界的模拟。
代码的重用。
Object类:
1、使我们所有类的根基类。
2、toString
3、equals hashcode wait notify
重写:
=:方法名字要一样。
>= : 子类的权限修饰符可以大于等于父类的。
<= <= :子类声明异常类型不能超过父类的。子类的返回值类型小于等于父类的类型。
多态:
三个必要的条件:继承,方法的重写,父类的引用指向子类的对象。
抽象类:
抽象类是不能有方法体的。
抽象类是不能够被new 的,也就是说不能够进行实例化的对象的。
如果一个类的实现了抽象类的话,那么这个类是需要实现这个方法的。
接口:
interface
1.一个类可以实现多个接口。
2、接口可以实现多继承
3、接口定义一组规范,实现现实世界中的逻辑。
内存机制:
栈:
1、存放局部变量
2、不可以被多个线程共享。
3、系统自动分配,速度快。
堆:
1、存放对象
2、可以被多个线程共享。
3、空间不连续,速度慢。但是灵活。
方法区:
1、存放类的新型:代码、静态变量、字符串常量等。
2、可以被多个线程共享。
3、空间不连续,速度慢,但是灵活。
垃圾回收(GC garbage collection)
1、程序员不能调用垃圾回收机制。
2、finalize
递归算法:
1、什么时候调用自己 。
2、什么时候不调用自己。
异常
1、try catch finally
2、声明抛出异常:throws
3、手动抛出异常:throw
4、自定义异常:
数组:
1、长度固定不可变
2、所有元素的类型一致
3、通过下标来引用,不能抄过length-1;
4、数组也是对象,数组的元素可以看作对象的成员变量。
5、多为数组:数组的元素是数组。
6、数组的初试化:3种2.
Arrays工具类。
集合:
1、collection
a.list 有序,可重复
ArrayLIst:底层用数组实现。线程不安全,效率高。
LinkedList:底层用双向链表实现,线程不安全,效率高。
vector:底层用数组实现,线程安全,效率低,
b.set 无序,不可重复。
HashSet:线程不安全,效率高。底层是HashMap。
2、map
采用key-value来存储我们的数据。
HashMap:线程不安全,效率高。
HashTable:线程安全,效率低。
3、Iterator
通过他可以实现遍历集合中的元素。
Collections:
泛型:
java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一_s10461的博客-CSDN博客_java泛型
常见类:
String:不可变字符串类型
StringBuilder:线程不安全,效率高。可变字符串序列。
StringBuffer:线程安全,可变字符串序列。
IO流:
多线程:
1、定义多线程的两种方式。
Extends Thread
implements Runnable
2、线程的状态
a.new
b. 就绪状态
c. 运行状态
d.阻塞状态
sleep:不会释放持有的对象锁
join:等待另外一个个线程执行完成。
wait :会释放持有的对象锁。