JavaSE
2020-05-24 21:45:55 6 举报
AI智能生成
JavaSE
作者其他创作
大纲/内容
构造方法
完成对类对象的初始工作
与类名相同,不能用void修饰
自动创建/调用无参
String
常量池里也是对象
final (private)关键字修饰,所以不可变
线程安全
创建方法两种
放常量池里
String a = "xxx"
String s2 = s1.intern();
放堆内存中
String s = new String("xxx")
String s = new String("xxx")
创建了两个对象
一个放常量池里
一个放堆内存里
下次再创建,先从常量池里找
并拷贝到堆内存
Buffer+builder
StringBuffer
加入了同步锁,线程安全
多线程下操作大量数据
StringBuilder
非线程安全
性能较高
单线程下操作大量数据
均继承自AbstractStringBuilder类
无final修饰,可变对象
无final修饰,可变对象
程序
数据结构+算法
java程序执行方法是栈:main先执后结束
递归导致栈溢出
栈
不存在GC
保存
8大类型
引用对象
实例方法
运行原理
栈帧
栈满
StackOverflowError
面向对象-过程
对象
易维护,易复用,易扩展,低耦合
封装
把一个对象的属性私有化
并提供相关方法给外界访问该属性
并提供相关方法给外界访问该属性
继承
在也有类的基础上扩展新类
extend关键字:可实现代码的最大复用
拥有父类中所有属性与方法(非访问)
多态
指引用变量所指向的具体类型或方法在编译时不能确定
只有在程序运行时才能确定
只有在程序运行时才能确定
继承
多个子类对同一个方法的重写
接口
实现接口并覆盖接口中同一方法
过程
以过程为中心
体现为函数
效率高,不需要初始化实例
接⼝和抽象类
1.修饰符
接口:默认public
抽象类:public,protected,default
2. 接口
所有方法在接口中不能实现
只能有且默认static,final变量
3.概念
一个类只能实现一个抽象类,但可继承多个接口
抽象是对类的抽象,是一种设计模板;接口是对行为的抽象,是一种行为规范
特点
编译与解释共存
Java解释器
JIT运行时编译
平台无关性
字节码
JVM可以理解的代码:.class
与C++
都是面向对象
Java不直接提供指针访问地址,较安全
Java类是单继承,C++是多继承
Java自动内存管理机制,自动释放内存
5大块
属性
方法
构造器
代码块
内部类
自动装箱-拆箱
装箱
将基本类型包装为相应的引用类型
调用valueOf()
Int-->转换时在[-128,127]之间,如果cache存在
直接指向该对象,大于创建新对象
直接指向该对象,大于创建新对象
拆箱
将引用类型转换为基本类型
调用xxxValue()
成员变量-局部变量
所属关系上
内存存储上
生存时间上
自动赋值上
对象相等-引用相等
对象--指在内存中存放的内容是否相等
引用--指向的内存地址是否相等
hashCode()-equals()
1. 全属于Object的方法
hashCode
哈希码-散列码:实际返回int整数
确定对象在hash表中的索引
以确定对象的位置
如果hasnCode相等,对象不一定相等
因为杂凑算法有误差
实现equals()-要实现hashCode()
为了提高效率,采取重写hashcode方法,
先进行hashcode比较,如果不同,
那么就没必要在进行equals的比较了,
这样就大大减少了equals比较的次数
先进行hashcode比较,如果不同,
那么就没必要在进行equals的比较了,
这样就大大减少了equals比较的次数
值传递-引用传递
值传递
调用者提供的值
Java仅支持值传递
引用传递
调用者提供的变量地址
根本区别是实参(调用)到底有没有被复制一份给形参(被调)
线程-程序-进程
线程
一个进程中可有多个线程
初始
new
运行
start()
堵塞
未获得锁
等待
wait()
终止
run()
操作系统能够进行运算调度的最小单位
多个线程共享同一块内存空间,调度效率高-轻量级进程
进程是线程的容器
程序
指令和数据(数据结构+算法)
静态代码
进程
系统进行资源分配和调度的基本单位
程序的一次动态执行过程
final
变量
基本类型:一旦初始化就不能更改
成员变量:必须初始
局部变量:可不初始化
引用类型
初始化后就不能在更改指向另一个对象
用来保证变量不可变
类
最终类-不能被继承
所有成员方法隐式指定为final
方法
方法锁定-不让继承
提高效率
private方法隐式指定为final
static
成员变量与成员方法
被修饰的成员属于类
被所有对象共享
在类加载到内存中时执行>构造方法
表示只保存一份副本
静态代码块
只执行一次
> 静态变量>构造方法
静态内部类
只能修饰内部类
非静态内部类
创建后会生成一个引用
指向外围类
不用指向外围类
不能使用外围类非静态xxx
this,super
this
用于引用类(对象)的当前实例,可不
super
从子类访问父类的变量和方法
必须放在构造函数首行
属于对象范畴,不能访问static
transient
阻止字段(变量)被序列化
只能修饰变量,不能修饰类和方法
try-catch-finally
捕获异常,处理异常,一定执行
在try-catch即使有return,finally也会在return前执行
都有return,finally里的会覆盖之前的return值
IO流
流向分
输入流
输出流
操作单元分
字节流bite
InputStream, OutputStream
信息的最小存储单元都是字节
适用音频、视频等读取
字符流char
Reader, Writer
字符流是JVM通过字节转换得到的,在不知道编码的情况下,为了减少乱码
涉及到字符,编码类型
流的角色
节点流
处理流
从键盘
Scanner s = new Scanner(System.in)
BufferReader s = new BufferReader(InputStreamReader(System.in))
读文件
InputStream is = this.getClass().getResourceAsStream("WordTree.txt");
InputStreamReader read1 = new InputStreamReader(is, "utf-8");
BufferedReader TYCCL_br = new BufferedReader((read1));
InputStreamReader read1 = new InputStreamReader(is, "utf-8");
BufferedReader TYCCL_br = new BufferedReader((read1));
拷贝
所有属性拷贝到另一个有着相同类类型的对象中去
浅拷贝
基本类型进行值传递,即修改不影响原
引用类型进行引用传递(地址),指向同一对象
深拷贝
引用类型
创建新的对象,并复制(修改不影响)
0 条评论
下一页