面向 对象 (Object Oriented)是 软件开发方法 ,一种编程范式 对应的还有 面向过程,面向函数 等
是对现实世界的抽象和模型化
用代码做现实世界的对照
1 5 | ⾯向过程 :⾯向过程性能⽐⾯向对象⾼。 因为类调⽤时需要实例化,开销⼤,比较消 耗资源,所以当性能是最重要的考量因素的时候,⽐如单⽚机、嵌⼊式开发、Linux/Unix 等 ⼀般采⽤⾯向过程开发。但是,⾯向过程没有⾯向对象易维护、易复⽤、易扩展。 ⾯向对象 :⾯向对象易维护、易复⽤、易扩展。 因为⾯向对象有封装、继承、多态性的特 性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能 ⽐⾯向过程低。 |
优点
支持多线程,垃圾自动回收,面向对象,跨平台
缺点
面向对象,运行速度慢,容易被反编译,启动时间慢,属于高级语言不支持底层操作
JDK 开发环境,包含编译器,JRE的所有功能
JRE 运行环境,包含JVM,JAVA类库
JVM是用来运行JAVA编译之后的字节码
重写 是覆盖原有方法
重载是同名不同个数或类型的入参
StringBuffer 对方法加了同步锁,线程安全
StringBuilder 未加锁,现成不安全
因为在string 中 存储数据的句柄用了 final 修饰,成员变量值不可改变
String s=”1”;s=”2”; 中创建了两个对象
== 比较相等,判断两个对象是不是同一个对象,基本类型比较的是值,引用类型比较的是内存地址
默认情况下 equals()等价与==
又称散列码 ,对数据进行摘要,提取指纹,具有 以下特性
对相同数据运算,结果相同
对不同数据运算,结果长度相同
运算单向不可逆
形参只是实参的一个copy
如果形参的实际引用变了,实参不变
如果形参的成员变量变了,实参跟着改变
1 5 9 13 17 21 25 29 | public class Main { public static class AAA{ public String a; AAA(){ } } public static void main(String[] args) { System.out.println("Hello, World"); AAA aa=new AAA(); aa.a="1"; System.out.println(aa); System.out.println(aa.a); test(aa); System.out.println(aa.a); } public static void test(AAA a){ a=new AAA(); a.a="2"; System.out.println(a); } } ------ 输出结果 Hello, World Main$AAA@6ff3c5b5 Main$AAA@3764951d |
系统运行程序到停止就是一个进程创建到消亡的过程,而线程则是进程的更小单位