Java核心技术卷1——第三章(上)
程序设计结构
-
简单程序
-
关键字class:
-
表明Java程序中的所有内容都包含在类中
-
加载程序逻辑的容器
-
类名
-
源代码文件名
-
公有类名
-
.java扩展名
-
.class与源文件存储在同一目录
-
main
-
从main方法开始执行(main方法强制public)
-
main默认正常退出返回0
-
返回其他的代码
-
System.exit()
-
{}块——划分程序各部分
-
注释
-
//
-
/*不能嵌套*/
-
/**
*用于自动生成文档
*/
-
数据类型
-
-
注:char类型16位不足以满足日常需求
-
代码点采用16进制书写
-
加上前缀U+
-
Unicode代码点分成17个代码级别
-
基本的多语言级别U+0000~U+FFFF
-
16个附加级别U+10000到U+10FFFF(包括一些辅助级别)
-
UTF-16编码代表一个代码单元
-
采用不同长度的编码表示所有Unicode代码点
-
基本的多语言级别16位,代码单元
-
附加级别一对连续的代码单元
-
落在基本的多语言级别的空闲的2048字节内——替代区域
-
第一个代码单元:U+D800~U+DBFF
-
第二个代码单元:U+DC00~U+DFFF
-
变量
-
属于一种类型type
-
声明变量
-
可一行声明多个变量(不推荐)
-
初始化变量
-
赋值语句显示初始化
-
可声明初始化一起
-
int i=10;//c++中表示定义变量,
-
extern int i;//c++中表示声明变量
-
Java不区别
-
常量
-
用final声明
-
表示只能被赋值一次,之后不可修改
-
习惯大写
-
类常量
-
作用于类的多个方法
-
static final
-
同时声明public,可用于其他类:类名.变量名
-
运算符
-
算术运算符+-*/%
-
二元运算符:+=、-=、*=、/=、%=
-
x+=4
-
自增与自减
-
x++、x--
-
关系运算符
-
==、!=、<、>、<=、>=
-
boolean运算符
-
&&、||、!
-
短路方式
-
三元操作
-
?:
-
位运算符
-
&、|——>获得布尔值
-
^、~
-
>>(右移【符号位填充高位】)、<<(左移)、>>>(右移【0填充高位】 )
-
要对右侧参数x%32,long类型的%64
-
数学函数与常数
-
Math类
-
平方根Math.sqrt(x);
-
幂运算Math.pow(x,a);
-
三角函数Math.sin Math.cos Math.tan Math.atan Math.atan2
-
指数函数Math.exp
-
自然对数Math.log
-
Math.PI
-
Math.E
-
JDK5.0可不加Math(要import java.lang.Math.*)
-
数值类型间转换
-
低可高
-
转float都会丢失精度,int转double不会丢失精度
-
运算n+f(n为整数,f为浮点数)
-
有double,全转double
-
有float,全转float
-
有long,全转long
-
否则全转int
-
-
强制类型转换
-
高转低
-
-
截断
-
(int)9.997 【小数部分将浮点型转换为整型】
-
(byte)300=44【超出目标类型表示范围】
-
舍入:Math.round方法(返回值类型为long)
-
括号和运算符级别
-
-
枚举类型
-
enum EnumName{VALUE1,VALUE2,VALUE3};
-
使用:EnumName 变量名=EnumName.Value2;
-
可以赋null值
-
字符串
-
Unicode字符序列
-
预定义类String
-
substring(a,b)提取子串
-
b为不想复制的第一个位置
-
a到b-1(a最小为0)
-
易计算子串长度
-
b-a
-
拼接(+)
-
不可变字符串
-
修改:拼接——str1 = str1.substring(0,3)+“p!”
-
效率不高
-
字符串共享
-
Java字符串相当于char* str = "hello"
-
char* temp =malloc(6);
-
strncpy(temp,str,3);
-
strncpy(temp+3,"p!",3);
-
greeting = temp;
-
赋予另一个值时,当其他字符串变量也不使用该值时,释放内存(垃圾回收机制)
-
检测字符串是否相等
-
str1.equals(str2)
-
str1、str2可为常量
-
不区分大小写比较:str1.equalsIgnoreCase(str2)
-
==字符串放置位置相同
-
字符串常量共享
-
+、substring的结果都不是共享的
-
compareTo和strcmp相同
-
-
-
获得给定字符串所需的代码单元
-
str.length()
-
获得给定字符串实际的长度,即代码点
-
str.codePoint(0,str.length());
-
返回位置n的代码单元(n属于(0,s.length()-1))
-
str.charAt(n);
-
获得第i个代码点
-
int index = str.offsetByCodePoints(0,i);
-
int cp = str.codePointAt(index);
-
-
字符可能占1代码单元,可能2个
-
遍历字符串,推荐
-
int cp=sentence.codePointAt(i);
-
if(Character.isSupplementaryCodePoint(cp)) i+=2;//辅助字节
-
else i++;//
-
回退操作
-
i--;
-
int cp = sentence.codePointAt(i);
-
if(Character.isSupplementaryCodePoint(cp)) i--;
-
字符串API
-
-
-
-
构建字符串
-
连接字符串
-
构建新的String对象
-
用StringBuilder类避免发生
-
StringBuilder builder = new StringBuilder();//空字符串构建器
-
builder.append(ch);//添加字符或字符串
-
String completedString = builder.toString();//转String对象
-
单线程
-
API
-
-
-
StringBuffer类
-
上面的前身
-
效率略低
-
允许多线程添加、删除字符
-
输入输出
-
控制流程
-
大数值
-
数组
详情见下

浙公网安备 33010602011771号