Java笔记
2022-08-01 09:05:59   0  举报             
     
         
 AI智能生成
  更新Java笔记
    作者其他创作
 大纲/内容
  面向对象    
     类, 对象(对象是类的具体表现)
  
     构造函数(单独无参隐式, 重载必须写无参)  
     封装    
     属性封装: setter/getter (alt+shift+s)  
     修饰符    
     子主题    
     同类    
     同包    
     子类    
     all  
     private    
     可    
     不可
    
     不可    
     不可  
     默认修饰符    
     可    
     可    
     不可(不同包)    
     不可  
     protected
    
     可    
     可    
     可    
     不可  
     public
    
     可    
     可    
     可    
     可  
     static    
     静态属性(成员变量): 类调用, 所有实例共享成员变量(内存中只有一个拷贝)  
     静态成员方法
    
     使用类调用  
     可直接调用本类中的静态成员, 静态方法  
     静态方法必须被实现  
     静态代码块    
     类加载, 就执行(顺序执行), 且只执行一次  
     继承(extends)    
     符合is-a关系
  
     方法重写: super.方法(调用父类方法)    
     方法重写和重载    
     子类中的方法与父类中的方法同名,称为方法重写(方法名相同,形参列表相同)  
     在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数,此现象称为方法重载  
     同名变量子类优先级高, super可调用父类同名变量  
     继承关系下子类父类初始化的顺序
父类的属性---->父类的构造函数---->子类的属性---->子类的构造函数
  
    父类的属性---->父类的构造函数---->子类的属性---->子类的构造函数
 多态    
     多态的描述    
     同一个操作/功能/方法, 传入的参数不同, 执行不同代码, 产生不同的结果  
     实现多态的前提条件    
     1.必须有继承关系的类
  
     2.子类必须重写父类的方法  
     3.向上转型(父=子) 自动类型转换  
     实现多态的方式
    
     1. 使用父类作为形参  
     2. 使用父类作为方法的返回值  
     向上/向下转型    
     1.父给子   向下转型  强制类型转换    调用子类特有的成员的时候需要强制类型转换为子类类型  
     2.子给父   向上转型  自动类型转换    调用父类中有,子类重写了父类中的这类方法  
     abstract关键字修饰    
     抽象类    
     抽象类不能被实例化
  
     抽象类中可以有多个抽象方法和多个实例方法  
     如果一个类中有抽象方法,那么该类一定是抽象类  
     子类必须重写父类中的所有抽象方法,除非子类也是抽象类  
     抽象方法    
     抽象方法没有方法体  
     接口    
     符合has-a关系, 一个类可实现多个接口
  
     接口是由全局常量和公共的抽象方法所组成.   
     接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的  
     异常    
     try-catch-finally
    
     try: 放可能发生异常的代码
catch: 一旦try中的代码发生了异常就走catch
finally: 除了退出程序,finally块中的代码无论是否发生异常一定会执行
    catch: 一旦try中的代码发生了异常就走catch
finally: 除了退出程序,finally块中的代码无论是否发生异常一定会执行
 多个catch块只能执行一个 (子类异常在前)  
     throw 和 throws  
     多线程    
     创建线程    
     继承java.lang.Thread类  
     实现java.lang.Runnable接口  
     run()和start()区别
    
     调用run()只有一条main线程这个路径  
     调用start() 有多条路径  多个线程抢占CPU交替执行  
     线程五状态    
     创建状态   new的时候  创建线程对象的时候  
     就绪状态  调用start()方法之后就是就绪  
     运行状态   抢到CPU就是运行   没运行完被其他线程抢走了 那就是就绪状态  
     阻塞状态  执行过程中由于某些原因导致不能继续运行了就是阻塞状态,  阻塞状态解除变成就绪  
     死亡状态  线程的功能结束了  
     线程调度    
     sleep(long millis)--使当前正在执行的线程以指定的毫秒数暂停
  
     setPriority(int类型的值)--设置优先级  
     join()--等待这个线程死亡。  
     yield()--概率礼让同优先级的进程
  
     synchronized关键字    
     修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁  
     修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁  
     修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁  
     (同一时刻只能有一个线程进入synchronized(this)同步代码块)
  
     基础知识    
     1.James Gosling  
     2.Java上线1995  
     3.公司: Oracle  
     4.JavaSE, JavaME, JavaEE  
     变量和数据类型    
     基本数据类型: byte, short, int, long,
float, double, char, boolean,
    float, double, char, boolean,
 引用数据类型: String, 数组, 自定义数据, 接口, ...  
     选择结构    
     if-else    
     if(判断条件) {
代码块1;
}else {
代码块2;
}
    代码块1;
}else {
代码块2;
}
 多个if-else    
     if(判断条件1) {
代码块1;
}else if(判断条件2) {
代码块2;
}else if(判断条件3) {
代码块3;
}... ...else{
代码块4;
}
    代码块1;
}else if(判断条件2) {
代码块2;
}else if(判断条件3) {
代码块3;
}... ...else{
代码块4;
}
 多重if    
     if(判断条件1) {
if(判断条件2) {
代码块1;
}
}else {
代码块2;
}
    if(判断条件2) {
代码块1;
}
}else {
代码块2;
}
 循环结构    
     for    
     for(int i=0; i<arr.length; i++){}  
     while(先判断,再循环)    
     while(判断条件){}  
     do-while(先执行,再循环)    
     do{}while(判断条件);  
     数组    
     一维数组    
     同一数组所有数据类型相同(二维数组一样)  
     数据类型[] 数组名 = new 数据类型[数组长度];  
     for循环遍历, foreach增强for循环  
     排序(升序): Arrays.sort(数组名);  
     二维数组    
     数据类型[][] 数组名 = new 数据类型[外层数组长度][内层数组长度];    
     内层数组长度可不写, 则内层数组长度不一.  
     集合    
     Collection接口    
     List接口 (存储一组不唯一,有序(插入顺序)的对象)    
     ArrayList (实现了长度可变的数组, 在内存中分配连续的空间. 遍历元素和随机访问元素的效率比较高)  
     LinkedList (采用链表存储方式. 插入、删除元素时效率比较高)
  
     Set接口 (存储一组唯一,无序的对象)
    
     HashSet  
     TreeSet  
     Map接口 (存储一组键值对象,提供key到value的映射)    
     HashMap
    
     Map 集合名 = new HashMap();
集合名.put(String, String);
  
    集合名.put(String, String);
 Map<String,String> 集合名=new HashMap<String,String>();  
     TreeMap
  
     迭代器(遍历集合)    
     1.获取迭代器对象
Iterator<要遍历的集合中存储的元素类型> 对象名=要遍历的集合.iteartor()
    Iterator<要遍历的集合中存储的元素类型> 对象名=要遍历的集合.iteartor()
 2.判断集合中还有没有元素,--对象名.hasNext()  true:有  false:没有  
     3. 一旦有就取出集合中的元素,--对象名.next()  
     
    收藏 
     
 
 
 
 
  0 条评论
 下一页
 为你推荐
 查看更多
    
   
  
  
  
  
  
  
  
  
  
  
 