核心技术 读书笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了核心技术 读书笔记相关的知识,希望对你有一定的参考价值。

Java 核心技术

字符串是用标准的Unicode 格式存储的

main 方法必须声明为public,且必须是静态的

用花括号划分程序的各个部分称为块

Byte  范围是-128到127 (包括0 一共256)

0x 16进制的前缀;0 是8进制的前缀;0b 是二进制的前缀

 double表示的精度是float的二倍,后缀加D;后缀加F

Static final 设置一个类常量

const是java保留关键字,goto 是保留字

位运算符>>, <<

不能使用没有进行赋值的变量

表示范围大的数据类型转为表示违反更小的数据类型,会有精度损失

&&的运算优先级高于||;a&&b||c 等价于(a&&b)||c

instanceof 是运算符

自定义枚举类型: 当变量的类型只在一个有限的集合内 。 例子:

Enum Size{small,medium,large,extra_large}

Size size = Size.medium;  size的取某一个枚举值,或null

从jdk1.7 开始switch中case可以用字符串且可以使用中文

BigInteger BigDecimal 这两个类可以处理包含任意长度数字序列的数字。不能使用+ 和* 处理这两个类的数据而是add 和multiply 方法:

BigInteger bigIntegerone = BigInteger.valueOf(100);将普通数值转换为大数值

BigInteger bigIntegertwo = BigInteger.valueOf(200)

BigInteger c = bigIntegerone.add(bigIntegertwo);

BigInteger d = bigIntegertwo.multiply(bigIntegerone);

 

声明数组 int [] a = new int [100]等价int a [] = new int [100]

int [] a = {1,2,3,4,5,6}

new int [] {1,2,3,4,5,6} 初始化一个匿名数组

允许数组长度为0 ,数组长度为0 和为null 有本质区别

创建一个数字数组时,所有元素都初始化为0,boolean数组的元素会初始化为false,对象元素的数组一律初始化为null

String [] names  = new String [10];创建一个长度为10的字符串数组,每个元素初始化为null.数组具有定长性

二维数组就是数组中的每个元素也是一个数组

nums[1] [2]  nums数组下标为1 的那个数组的下标为2 的元素

类是构造对象的模板或蓝图

不是所有的类都有面向对象的特征: 如 Math类

希望构造的对象可以多次使用,因此,需要将对象保存到一个变量中。一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。任何对象变量的值都是对存储在另一个地方的一个对象的引用,new操作符返回的也是一个引用

如果需要返回一个数据时刻时变动的对象,就应该使用clone

Class Employee implements Cloneable

Employee original = new Employee(3434);

Employee copy = original.clone();

实例域和静态域,初始化块(class{初始化块});静态初始化块(static{静态初始化块}),实例初始化块

在启动程序时还没有任何一个对象。静态的main方法将执行并创建程序所需要的对象

Java对对象采用的不是引用调用,实际上,对象引用进行的是值传递

返回类型不是方法签名的一部分,即不能有两个名字相同,参数列表相同只有返回值不同的方法

如果构造器的第一个语句是this(...),这个构造器将调用同一类的另一个构造器

注释: @param @return @throws @author @version

this: 1、引用隐式参数  2、调用本类其他构造器

super: 1、调用父类方法  2、调用父类构造器

在继承链上进行向上向下转型,在向下转型时,要先使用instanceof 进行检查再进行强制转换

在什么情况下会使用没有抽象方法的抽象类

父类声明为private的内容子类也不能访问; protected对本包和所有子类可见

equals 方法 判断两个对象是否具有相同的引用;使用 = = 比较基本类型域,使用equals比较对象域

只要对象一个字符串通过+连接起来,java编译就会自动调用toString()方法,以便获得这个对象的字符串描述

如果数组的元素较多,且经常需要在中间插入/删除时就应该考虑使用链表了

ArrayList<T> T不能为基本类型 ,基本类型要转为包装类,包装类是final,所以不能有子类

Object newArray = Array.newInstance(数组类型,数组长度);

Array 类中的sort方法可以对对象数组进行排序,前提示对象所属的类必须实现了Comparable接口

在比较两个枚举类时,直接使用 = =; 每个枚举类有一个静态反方法 values,它将返回一个包含全部枚举值的数组:

Size [] values = Size.values();所有枚举类都是Enum的子类,

创建枚举类型要使用 enum 关键字

If(e.getClass() == Employee.getClass())  

e.getClass().newInstance() 快速创建一个类的实例

反射机制最重要的内容----检查类的结构,Class 类中的getFields 返回类中的域、getMethods 返回方法 getConstructors 返回构造器  getDeclareFields  getDeclareMethods getDeclaredConstructors  返回类中的全部域,方法和构造器

接口中所有方法自动属于public  ;在实现接口时必须把方法声明为public

为什么有了抽象类还要引入接口,因为单继承,但是一个类可以实现多个接口,这弥补了java没有多继承的缺点

 

为什么要使用内部类:

1、   内部类可以访问该内部类定义所在的作用域中的数据,包括私有数据

2、   内部类可以对同一个包中的其他类隐藏起来

3、   当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类(只创建这个类的一个对象时)比较便捷

 

当需要捕获多个异常时, catch(IOException|UnknownHostException e ){    }

泛型类  :编写 泛型 类中不能 使用异常     反射和泛型类的结合使用

Public class pair<T>{

  Private T first;

   Private T second;

}

泛型方法:

  Public static <T> T getMiddle (T  a){

        return  a[a.length/2];

}

      

 

关键字、保留字和运算符

Const

goto

instanceof

continue

Switch  case  default  break

equals

enum  创建枚举类 public enum EnumTest {}

Assert  断言  如果断言为false  抛出AssertionError异常

 

 

以上是关于核心技术 读书笔记的主要内容,如果未能解决你的问题,请参考以下文章

Java核心技术读书笔记11-3 Java NIO介绍与核心功能概述

读书笔记--Java核心技术--高级特征

读书笔记--Java核心技术--基础篇

《大型网站技术架构——核心原理与案例分析》读书笔记

Java核心技术读书笔记11- 1 Java流与读写器

《大型网站技术架构——核心原理与案例分析》读书笔记