封装:我们把属性私有化,提供公有的访问方法,隐藏内部实现,提高代码安全性
Private protected default public
生成get、set方法 生成有参、无参的构造方法
一般情况下,有限次的循环用for,无限循环用while(true)
Cj.length 获取数组长度
for(int i=0;i<cj.length;i++){}
New类 实例化对象,创建对象,系统会分一块内存空间
ArrayList<E> ar = new ArrayList<E>()
<E>泛型,用于约束集合只能存放什么数据(默认为object)
ar.add()向集合中添加数据
E e = ar.get(i)从集合根据序号取出数据
ar.remove(i)根据序号删除
ArrayList | LinkedList | HashMap |
查找和修改效率高 | 添加删除效率高 比ArrayList多几个处理收尾的方法 | 键值对,键不可重复,重复不报错,但会被覆盖 |
Map.put(“小明”,59)添加元素
Map.get(“ ”)通过key取值
Hashset<String>( )
Set.add(“”) HashCode() 判重
Public void fn() thorws Exception { } 抛异常
Try{将要处理的代码放入try代码块}
Catch(Exception e){ Exception 异常基类 (IOException) (ClassNotFoundException)}
try代码块出现错误进入catch代码块
e.printStackTrace();获取异常信息,输出到控制台
ArrayList<>数组
满了自动扩容,便利,随机访问效率高
HashSet
Set集合,无序,不重复,遍历时使用迭代
HashMap
底层是数组+链表模式,放入数据是先计算哈希值,取余,放入对应的数组中,取值时也相同,计算哈希值取余,从对应数组中取出,哈希值一致时,使用链表的形式存储,key和value的键值对,一个key对应一个value,key不可重复,value可重复
线程
电脑中独立运行的程序为进程,进程下分为主线程和线程
创建方式
集成Thread类,重写run方法,放入Thread父类构造方法中,用.start()启动
线程生命周期
就绪 运行 阻塞事件 阻塞解除 就绪 运行 销毁
线程优先级分为1-9 越高越先执行,默认是5
多线程安全本质:多线程在访问公共资源的时候,
1.使用锁锁住公共资源入口 2.不访问公共资源
继承 extends
子类继承父类后,会获得父类所有的属性和方法,但是只可以调用非私有的属性和方法
Java中的类继承是单继承,即子类只有一个父类,一个父类可以有多个子类
子类中的方法名与父类中的方法名,参数一致,叫重写,
接口 interface / implements
类implements实现接口 interface中的方法,接口中的所有方法必须全部重写
多态:父类的声明对象可以存放子类的引用(运行时多态,编译时多态)
方法的多态性:会根据运行时具体引用类型调用类中方法,属性不具有多态性(无意义)
构造方法:
1 默认情况下,系统会为每一个类提供一个无参的构造方法
2 方法名与类名一致,无返回值
3 我们程序使用new+构造方法创建实例化对象
4 手动编写了有参的构造方法,系统不再提供无参的构造方法,想使用无参的构造方法需要手动写
5在调用子类中的无参构造方法时,会默认先调用父类中的无参构造方法
Private | Default | Protected | Public |
只存在于本类中 | 本类和子类 | 同包,本类,子类 | 本项目中 |
Final 最终的
修饰变量,则变量变为常量,不可修改!
修饰方法,方法不可被重写
修饰类,不可被继承
Static 静态类
系统为每一个类提供一个静态空间,用于存储静态属性,调用静态方法,被本类中所有实例所共享,(内容会被覆盖,保留最后一次赋值)
静态代码块,无论如何都会被执行
异常,防止程序因为异常直接中断,并且抛出出现的异常问题
运行时异常,不强制你加入try catch中
非运行时异常,在编写代码阶段,强制你加入try catch 中
Try 监控容易出现的异常代码
Catch 捕获异常,处理
Throws 抛出异常,自己类内不处理异常
Finally 一定会执行的内容,一般用于释放资源
Throw 手动出现异常