很久以前看到博客推荐过这本经典Java 核心技术卷I,然后就买了一本盗版的,书中的内容很全面和基础,只大概翻过几次,时间久了也就忘记了,决定把重点的内容摘抄在这里。
前两章不做记录,从第3章开始。
Java 区分大小写,源文件文件名要与公共类类名相同,从main方法开始执行,main必须声明为public。
命名规则:字母开头+数字/字母,无长度限制,不能使用保留字,标准命名规范要求以大写字母开头。
javac ClassName.java java ClassName 函数调用语法 :object.method(parameters)
注释: 1 // 2 /* */ 3 /** */
数据类型: Java 是强类型语言,每个变量声明一种类型。
8种基本类型 :4 种整型 ,2种浮点型 ,1种Unicode 编码的字符类型,1种表示真假的boolean类型
java 的数值类型和具体的操作系统平台无关,没有无符号形式的byte,short,int,long (整型)
整型表示没有小数部分的数值,可为负数。0b/0B 二进制数,0 八进制数 ,0x/0X 十六进制数
byte 1字节,short 2字节, int 4字节 ,long 8字节(后缀L或l)
浮点型表示有小数部分的数值
float 单精度 4字节 后缀F或f double 双精度 8字节 后缀D或d 默认为double 类型
可以用16进制来表示浮点数,尾数16进制,指数10进制
表示溢出和出错情况的浮点数值:正无穷大,负无穷大,非数值NaN
char 类型
Unicode 字符用char值表示,char='A'/65,或者用16进制值
Unicode 编码解决问题
1.对于任意给定的代码值,在不同的编码方案下有可能对应不同的字母
2.大字符集的语言其编码长度有可能不同,有的字符采用单字节编码,有的字符需要两个或更多字节
两个字节已经不能对世界上所有语言的所有字符进行编码
Java语言怎么解决这个问题?
码点:编码表中某个字符对应的代码值。16进制编写,U+前缀,码点分为17个代码级别
第一节别:基本的多语言级别,从U+0000 到 U+FFFF,包括经典的Unicode 代码
其余16个级别:从U+10000 到U+10FFFF,包括一些辅助字符
boolean 类型,true 或false
变量 (有一个类型) 命名:字母开头+字母/数字,不能使用保留字,先声明,后初始化
fianl 常量,赋值一次,不能再修改,通常变量名全大写
整数被0除产生异常,浮点数被0除无穷大或NaN
不同类型的操作数运算,会转换为同一类型,虚线可能会精度损失
java 三元操作符 condition ? expression1 : expression2 条件为true ,选择表达式1,否则选择表达式2
&& 和 || 采用短路方式计算 &和|两部分都要计算
位运算符,直接对组成整型数值的各个位完成操作,& and ,| or ,^ nor ,~ not
>> 左移 <<右移 >>>用0填充高位
java 块 用大括号括起来包含若干条语句,嵌套的两个块不能声明同名的变量。
条件语句 if...else..
循环语句 while(condition) statement 先判断,后执行循环体
do statement while(condition) 先执行一次循环体,后判断
for 判断,执行循环体,更新计数器
switch 多重循环 ,匹配case然后break 退出,没有到default 结束
case 标签:char,byte,short,int ,枚举,字符串
break ,满足条件跳出整个循环,不在执行循环体
continue,满足条件,跳过循环体内continue 之后的内容,到判断条件处(while)或更新计数器处(for)
大数值:整数和浮点数精度不满足要求
BigInteger 和BigDecimal 处理包含任意长度数字序列的数值,前者 任意精度整数运算,后者任意精度浮点数运算
数组:存储同一类型值的集合
创建数组后,会对元素进行初始化 ,0,false,null
增强的for 循环,for(variable:collection) statement collection 数组 或 实现iterable 接口的类对象
type element : a ;for each element in a
数组拷贝
1.两个变量引用同一个数组
2.Arrays.copyOf,将一个数组中的值拷贝到新数组中
int [] copy =Arrays.copyOf(原数组,新数组长度) 大于原始数组,赋默认值,0 false / 小于原始数组 只拷贝前面的元素
static type copyOf(type[] a,int length)
static type copyOf(type[] a,int start ,int end )
返回与a 同类型的一个数组,长度为length 或 end - start
数组排序
static void sort(type [] a) 采用优化快速排序算法对数组进行排序
数组查找
static int binarySearch(type []a,type v)
static int binarySearch(type []a ,int start ,int end ,type v) 包含start 不包含 end
二分搜索查找值v,成功返回下标,否则返回一个负数值 r
数组相等
static boolean equals(type[] a,type [] b)
数组大小相同,并且对应的下标元素也相等