cora java volume I 学习笔记
来源:互联网 发布:淘宝客api生成推广url 编辑:程序博客网 时间:2024/06/06 07:51
在这些天将core java volume I的非GUI部分看完了同时也将thinking in java看到了第八章,就两者深度比较而言,thinking in java的深度要比前者大很多,由于明天要去亚信联创面试,所以在这里将core java volume I 复习一遍同时把 thinking in java也复习一遍,当然同时会加上令我印象深刻的《设计模式的艺术--软件开发人员内功修炼之道》一书中关于singleton模式的理解。
第一部分:
Integer types : java中基本类型有八种:byte,short,int, long,boolean,char,float ,double,他们的storage require分别是(byte):byte:1 , short :2 , int :4, long :8, char :2, float : 4 , double :8 .boolean不知道,大概也没必要知道,因为它是特殊的,基本没有 up-cast或者 down-cast。
我们都知道浮点数是不准确的,对于double,double的wrapper(包装类)有以下的static variable Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN, 在Float里面也一样有这些。NaN的意思是 not a number.
其次:System.out.println(2.0 - 1.1) 的结果会是:0.8999999999999999999 ,这就是浮点数的不准确性。
char的值会是:\u0000 to \uFFFF .
这7个类型之间的cast如下图:
此外请记得,各种基本类型的默认值:boolean : false , char :'\u0000' (null) 其他都是0
Java操作符:
java操作符的优先级记忆方法:
Ulcer Addicts Really Like C A lot
ulcer unary!~ + - ++ --Addicts arithmetic* / % + - << >>ReallyRelational> < >= <= == !=LikeLogical&& || & | ^CConditionalA>B?X:YA LotAssignment=(或者复合等于 *= 等)
结合性 : Right to Left : unary , conditional , Assignment 就是说开头一个和后尾的两个都是 Right to left ,其他都是 left to right
根据自身情况的特别提醒:~i 与 i 二进制位上取反, -i 与 i 数值上加和为0
请注意 >> 操作符和 >>> 操作符的区别:
>> : 符号拓展
>>> : 0拓展
其次,关于异或(^)的性质的使用也很多,但是不在我们今天这篇文章里面讨论。
控制流程:
这里必须说明一个:switch作为多路选择,选择因子必须为 int 或者 char 这样的整数值 或者 string 这样的类型
其次: 如果将一个 float 或者 double cast为 整形时(int, long ,char ,byte) 小数部分会砍掉
比较:
整形值和浮点值的比较都很简单,在这里不介绍,但是却想提出 string对象的比较:
String str1 = new String("abc");String str2 = new String("abc");System.out.println(str1 == str2);System.out.println(str1.equals(str2));这样的结果是: false true
String str1 = "abc";String str2 = "abc";System.out.println(str1 == str2);System.out.println(str1.equals(str2));这样的结果是: true true
String str1 = new String("abc");String str2 = "abc";System.out.println(str1 == str2);System.out.println(str1.equals(str2));这样的结果是:false true
只要明白jvm对于 字符窜字面值常量放在 常量池中,new的string对象放在heap中这个道理,并且知道对于一个object == 比较的是object的地址,就能明白以上答案。
同时,对于String 对象, equals比较的是两个对象的hashcode,string的hashcode较特别:
hashcode = hashcode*31 + charAt[i];所以equals比较的是两个string的字符串是否一样。其他object的 hashcode一般是跟内存地址有关的。
高精度数字:BigInteger 和 BigDecimal
这两个class 在 java.math包中,支持任意进度的整数和定点数,简单创建和使用如下:
BigInteger a = BigInteger.valueOf(100);// 省略了 b的生成过程BigInteger c = a.add(b);BigInteger d = c.multiply(b.add(BigInteger.valueOf(2));
有一位同学去腾讯面试产品经理实习生,被面试官问了一个问题:怎样理解面向对象?
回来一想,以下这副图可以帮我们了解面向对象:
面向对象已数据为核心,对数据和处理数据的method进行封装,提高了安全性。
未完待续(to be continue...)
- cora java volume I 学习笔记
- 《Core Java Volume I》学习笔记之命令行方式开发java程序
- Core Java Volume I 读书笔记
- NOVA-VOLUME 学习笔记
- OVa Online Judge 学习笔记- AOAPC I Volume 1. Elementary Problem Solving String
- OVa Online Judge 学习笔记- AOAPC I Volume 1. Elementary Problem Solving Big Number
- OVa Online Judge 学习笔记- AOAPC I Volume 1. Sorting/Searching
- OVa Online Judge 学习笔记- AOAPC I: Volume 2. Data Structure Lists
- OVa Online Judge 学习笔记- AOAPC I: Volume 2. Data Structure Tree
- Core Java Volume I - Fundamentals (10th) 1-8章 阅读笔记
- Building Java Enterprise Applications Volume I: Architecture
- Core Java Volume I Coding Practices
- java学习笔记 i++和++i
- Java I/O学习笔记
- Java I/O学习笔记
- java 学习笔记 核心技术I
- 【Java学习笔记】I/O
- java I/O 学习笔记
- 手把手教你如何获取IOS MAC地址
- 教你如何升级app适配iOS 7
- jquery 显示*天*时*分*秒
- 代码设计规范
- C++中字符串查找
- cora java volume I 学习笔记
- All_Perm
- 创建你自己的 iOS 框架
- spring事务管理
- iOS开发单例模式Non-ARC(非ARC)和ARC+GCD
- ViewDefinitionSearch in Oracle[…
- Perl正则表达式模式测试程序
- 幽默
- Perl DBI 入门和Perl DBI连接MySQL…