核心技术 读书笔记

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异常

 

 

时间: 2024-10-22 02:00:39

核心技术 读书笔记的相关文章

Java多线程编程核心技术读书笔记(3)-线程通信

线程是操作系统中独立的个体,但是这些个体如果无法经过特殊的处理就不能成为一个整体.线程间通信可以实现线程间的信息互换.相互唤起等功能,是系统的交互性更加强大,大大提高CPU的利用率,同时还能让开发者对各个线程任务有清晰的把控和监督,最常用的线程通信方法就是--等待/通知机制. 一.等待/通知机制 1.wait() / notify() 等待/通知机制在生活中比比皆是,例如:厨师/服务员的菜品传递台.生产者/消费者模式,JDK中通过Object里面的两个方法 wait() / notify() 来

Oracle redo 复杂度--oracle核心技术读书笔记三

一. 概述 我们知道,在oracle中,每修改一条数据都会生成一条重做数据(也就是redo,里面记录了修改后的内容).目的就是为了将修改的数据备份,方便今后重做.现在有一个问题.oracle中只要修改数据,都会生成redo,这些redo会存放在一个叫做重做日志缓冲区里面.如果同时多个回话在修改数据,都要往重做日志缓冲区写入内容,就存在为同一片内存区域竞争的问题.存在竞争,就存在开销,这篇文章大概介绍一下,oracle如何尽量降低这种开销. 二.  问题概述 oracle中不断地修改数据,源源不断

Oracle事务原理探究1--oracle核心技术读书笔记五

1. 冲突解决 假如有一个系统只有你和我两个用户,并且我们都在持续对系统中一小部分数据做修改和查询操作. 如果你正在数据库中做一批修改操作,而我正在做查询,我一定不能看到你所做的修改,直到你告诉我可以看到你所做的所有更改才行(你提交了事务).因此在oracle内部,必须有一个高效的办法来识别哪些数据我可以看到,哪些数据我不可以看到. 从相反的角度来看,在你提交事务的时候,你需要一种高效的机制让其他所有人能够看到事务已经提交(也就是要告诉别人你所有修改过的数据都是可见的了).更极端一点的情况是,你

oracle undo 复杂度--oracle核心技术读书笔记四

一. 概述 undo 保存的是旧数据.比方.你改动了一条记录将A列abc改动为def.那么undo里面保存的就是abc.目的有两个:1. 假设你的事务没有提交.可是已经将A列改动,那么别人读取这条数据的时候,不应该可以看到你改动后的内容def,应该还仅仅能看到abc,这个时候就须要去读取undo,才干取到abc. 2. 假设你的事务后来失败,须要将A列由改动过的值def回退到之前的值abc.abc也要从undo里面去取. 这篇文章.简要介绍一下读一致性(也就是别人无法读取到你改动的未提交的内容)

oracle如何保证事务的ACID原则--oracle核心技术读书笔记二

在事务中有四个通用的原则是所有数据库都必须遵守的,简称ACID原则,下面简单概述一下oracle是怎样实现这四个原则的. 一. 原子性(Atomicity):一个事务要么全部执行,要么全部都不执行 在oracle中,当我们做一次变更的时候,系统会自动创建一条undo记录来描述怎样撤销这次变更.也就是说,当执行到一个事务的中间时,如果有其他用户想访问我们更改过的数据,他必须使用undo记录来查看变更前的旧数据,即只有当我们提交这个事务后,所做的更改才能被他人看到.这样就可以确保,其他用户要么能看到

Oracle基本数据改变原理浅析(redo与undo)--oracle核心技术读书笔记一

在oracle中我们做一些更新操作,oracle底层是怎么流转的呢,就是这篇文章要讲解的. 一. 原理 假设我们在一个已经更新了很多条分散记录的OLTP系统中,更新了一行数据.那么这个更新的真实步骤如下: 1. 创建一个重做改变向量,描述如何往undo块插入一条undo记录(也就是描述undo块的改变) 2. 创建一个重做改变向量,描述数据块的改变(也就是数据的改变) 3. 合并这两个重做改变向量为一条日志记录,并写到重做日志缓冲区(便于今后重做) 4. 向undo块插入undo记录(便于今后回

Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)

3.3 数据类型 Java是强类型语言,必须为每一个变量声明一种类型. 3.3.1 整型 Java 提供四种整型 int 4字节 short 2字节 long 8字节 byte 1字节 长整型(long)数值有一个后缀L(例如40000000000L),十六进制数值有一个前缀0x(例如0xCAFE),八进制数值有一个前缀0(例如010). 3.3.2 浮点型 Java提供两种浮点类型 float 4字节 double 8字节 float类型的数值有一个后缀F(例如3.42F),没有后缀F的浮点数

这就是搜索引擎--读书笔记一

这就是搜索引擎 -- 读书笔记一 相信搜索引擎对于每一个爱好算法甚至爱好技术的IT人员都具有强烈的好奇心吧,因为搜索引擎在互联网中的地位实在是不可撼动.想象如果互联网没有了搜索引擎,那么我们平常技术上出现瓶颈了怎么办?甚至连普通的生活都离不开搜索,大学生的你订餐了吗? 搜索引擎已经发展为每个人上网都离不开的重要工具,其技术发展历程是怎样的呢?其基本目标是什么?核心技术问题又是什么呢?在接下来的一系列博文中,我会根据读书和自己的总结用平乏的语言来表达出来,希望对朋友们有所帮助.另外,博友们如果有好

读书笔记(第五周)之魔方的创新

读书笔记(第五周) 读<构建之法>之魔方的创新 在不苛求比喻精准的前提下,"魔方的创新" 这篇小故事写得确实有意思,也很能反映创新过程中一系列的问题.首先,通过几个大致的故事节点来总结一下情节的发展,再来逐一展开拓展的思考. 1· 在之前没人玩过魔方的王屋村,果冻首先掌握魔方的玩法,"口传心授,不立文字" 地教同学玩魔方并担任唯一的魔方代购,获得魔方大师的称号. 2· 小飞不甘示弱,复印魔方口诀,赠送口诀以刺激自己魔方的销售,魔方的口诀和销售不再受果冻垄