java学习笔记(摘录)

该博客是来自《java工程师修炼之道》的学习笔记,涵盖代码点与单元、字符串特性、数组、对象操作、方法特性、类设计技巧、继承与多态、抽象类、同步器、流类和对象序列化等Java知识要点,为Java学习提供参考。

很好的java学习笔记 来自《java工程师修炼之道》
1.代码点与代码单元 codePoint codeUnit 这里当字符串中有辅助字符时,代码点是两个代码单元,需要以下遍历:

 int cp = sentence.codePointAt(i);
 if(Character.isSupplementaryCodePoint(cp)){
      i += 2;
 }else{
      i++;
 }

2.String类对象->不可变字符串 不能修改字符串中的字符:编译器可以将字符串共享,以此带来高效率。

3.当将一个字符串与一个非字符串的值进行拼接时,后者将被转换成字符串。
4.任何一个对象都可以转换成字符串。
5.检测两字符串是否相等,而不区分大小写,可用equalsIgnoreCase()方法
6.Java中允许一个数组长度为0,不同于null。
7.Java中的多维数组实际上是数组的数组。
8.一个对象变量实际上是一个对象指针。
9.用clone()方法获得对象的完整拷贝。
10.不能编写返回引用可变对象的访问器方法。
11.一个方法可以访问所属类的所有对象的私有数据。
12.Sytem类中有一个setOut方法是一个本地方法,不是用Java语言实现的,可以绕过Java的存取控制机制(out是final的)。
13.每个类都可以有一个main方法,可用来进行单元测试。
14.一个方法不能修改一个基本数据; 一个方法可以改变一个对象参数的状态; 一个方法不能让对象参数引用一个新的对象。
15.方法签名:方法名、参数类型。
16.初始化块机制 首先运行初始化快,然后才运行构造器的主体部分 静态域初始化块:

static{
}

17.只能使用*导入一个包,如:

import java.util.*;

18.静态导入:静态方法、静态域

import static java.lang.System.*;

19.如果没有指定public或private,那么这个部分(类、方法或者变量)可被同一个包中的所有方法访问

20.包作用域:默认情况下是包可见的
21.包密封:(package sealing) jar文件密封包
22./*…/->文档注释 javadoc 标记+自由格式,其中标记由”@”开始
23.类设计技巧:

  • 一定要将数据设为私有;
    一定要对数据初始化;
    不要在类中使用过多的基本数据类型;
    不是所有的域都需要独立的域访问器和域更改器;
    使用标准格式进行类的定义;
    将职责过多的类进行分解;
    类名和方法名要能够体现它们的职责。

24.Java中的所有继承都是公有继承:超类和子类
25.覆盖(Override)子类使用super调用超类的方法以及构造器
26.一个对象变量可以引用多种实际类型的现象叫做多态(Polymorphism) 运行能够自动地选择调用的适当方法的现象称为动态绑定
27.虚拟机预先为各个类创建了一个方法表
28.在覆盖一个方法时,子类方法不能低于超类方法的可见性
29.阻止继承的两种方法:final类的方法自动成为final方法(不包括域),final方法
30.内联的概念:如果一个方法没有被覆盖并且很短,编译器就能够对它进行优化处理。
31.强制类型转换: 只能在继承层次内进行类型转换; 在将超类转换成子类的前应使用instanceof进行检查
32.抽象类可以包含非抽象方法,也可以不包含抽象方法。抽象方法充当着占位的角色,具体实现在子类中。 抽象类不能被实例化 只有子类实现了所有抽象方法,子类才不是抽象的了
33.子类不能访问超类的私有域
34.hashcode: 由对象导出的一个整型值 每个对象都有一个默认的散列码,其值为对象的存储地址
35.两个相等的对象要求必须返回一个相等的散列码
36.自动打包规范要求boolean byte char=0:x;
37.同步器:

  • CountDownLatch:利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能。
    CyclicBarrier:字面意思为回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier。
    Semaphore:信号量,Semaphore可以控制同时访问的线程个数,通过acquire()获取一个许可,如果没有就等待。通过release()释放一个许可。

38。四个基本的抽象流类:InputStream OutputStream Reader Writer(这些对象由其他方法返回)
39.注意流过滤器的运用
40.对象序列化:ObjectOutputstream ObjectInputStream writeObject() readObject() 类必须实现Serializable 接口
41.Java使用SHA编码的前8字节作为类的指纹 在序列化的过程中内存地址会被替换为序列号(唯一)
42.流类关注的是文件内容,而File类关注的是文件在磁盘上的存储

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值