CoreJava Reading Note(3:Fundamental structure)
1.CamelCase
类名是以大写字母开头的词,如果名字由多个单词组成,每个单词的地一个字母都应该大写。
例如:FirstExample,ObjectDemo.....
2.数据类型
a.整型:
int:4字节
short:2字节
long:8字节
byte:1字节
注:长整型数值有一个后缀L或l(如4000000000L)。十六进制数值有一个前缀0x或0X(如0xCAFE)。八进制有一个前缀0(如010)。
Java7开始,加上0b或0B就可以写二进制数。例如,0b1001就是9。
b.浮点型:
float:4字节
double:8字节
注:1.float类型的数值有一个后缀F或f(例如,3.14F)。没有F后缀的浮点数值默认为double型。
2.浮点数值不适用于无法接受摄入误差的金融计算中。例如:
System.out.println(2.0-1.1);//0.89999999999,not 0.9
这种舍入误差的主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确地表示分数1/10。这就好像十进制无法精确表示分数1/3一样。
c.boolean类型:
整型值与布尔值之间不能进行相互转换。
3.运算符
整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大(Infinity)或NaN结果。
4.Math类
平方根:Math.sqrt(Type x)
幂运算:Math.pow(Double x,Double y) -------表示x的y次幂
三角函数:Math.sin,Math.cos,Math.tan,Math.atan,Math.atan2
指数与对数:Math.exp,Math.log,Math.log10
常量:Math.PI,Math.E
注:在使用%求余运算中,n%2,如果n为负数,则结果得-1。而Math.floorMod方法可以总是得到需要的余数而非-1。
5.数值之间的转换
无信息丢失的转换:byte-->short,short-->int,char-->int,int-->long,int-->double,float-->double。
可能有精度损失的转换:int-->float,long-->float,long-->double。
小结:只有向上转型是可行的,无危险的。
6.String类
API:
int compareTo(String other)
按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other后,返回一个正数;如果两个字符串相等,返回0。
boolean equals(Object other)
如果字符串与other相等,返回true。
boolean startsWith(String prefix)
boolean endsWith(String suffix)
如果字符串以suffix开头或结尾,则返回true。
int indexOf(String str)
int indexOf(String str,int fromIndex)
返回与字符串str匹配的第一个子串开始位置。这个位置从索引0或fromIndex开始结算。如果在原始串中不存在str,返回-1。
int length()
返回字符串的长度
String substring(int beginInex)
String substring(int beginIndex,int endIndex)
返回一个新字符串,这个字符串包含原始字符串中从beginIndex到串尾或endIndex-1的所有代码单元。
String toLowerCase()
String toUpperCase()
返回一个新字符串。这个字符串包含原始字符串中的大写字母改为小写(或反之)
String trim()
返回一个新字符串,这个字符串将删除了原始字符串头部和尾部的空格
String join(CharSequence delimiter,CharSequence... elements)
System.out.println(String.join("/","S","M","L"));//print S/M/L
7.StringBuilder,StringBuffer
有些时候,需要由较短的字符串构建字符串,例如,按键或来自文件中的单词。采用字符连接的方式达到此目的的效率比较低。每次连接字符串都会构建一个新的String对象,既耗时又耗空间。使用StringBuilder类就能避免此问题
StringBuilder builder=new StringBuilder(); builder.append(ch); //appends a single character builder.append(str); //appends a string //在需要构建字符串时调用toString方法 String completedString=builder.toString();
注:StringBuilder是StringBuffer的前身,其效率有点低,但允许采用多线程的方式执行添加或删除字符的操作。如果所有字符串在一个单线程中编辑。则应该使用StringBuffer类替代他。这两个的API是相同的。
API:
StringBuilder()
构造一个空的字符串构建器。
int length()
返回构建器或缓冲器中的代码单元数量。
StringBuilder append(String str)
追加一个字符串并返回this。
void setCharAt(int i,char c)
将第i个代码单元设置为c。
StringBuilder insert(int offset,String str)
在offset位置插入一个字符串并返回this。
StringBuilder delete(int startIndex,int endIndex)
删除偏移量从startIndex到-endIndex-1的代码单元并返回this。
StringBuilder toString()
返回一个与构建器或缓冲器内容相同的字符串
8.Arrays类
API:
static String toString(type[] a)
返回包含a中数据元素的字符串,这些数据元素被放在括号内,并用逗号分隔。
参数:a 类型为int,long,short,float,double,char,byte的数组
static type copyOf(type[] a,int length)
static type copyOf(type[] a,int start,int end)
返回与a类型相同的一个数组,其长度为length或者end-start,数组元素为a的值。
参数:a ...
start 起始下标(包含这个值)
end 终止下标(不包含这个值)。这个值可能大于a.length。在这种情况下,结果为0或false
length 拷贝的数据元素长度。如果length值大于a.length,结果为0或false。否则,数组中只有前面length个数据元素的拷贝值。
static void sort(type[] a)
采用优化的快速排序算法对数组进行排序。
参数:a ...
static int binarySearch(type[] a,int start,int end,type v)
采用二分搜索算法查找值v,如果查找成功返回相应的下标值,否则返回一个负数r,-r-1是为保持a有序v应插入的位置。
static void fill(type[] a,type v)
将数字的所有数据元素值设置为v。
static boolean equals(type[] a,type[] b)
如果两个数组大小相同,并且下标相同的元素都对应相等,返回true
posted on 2018-02-13 15:16 Dingkai_Li 阅读(136) 评论(0) 编辑 收藏 举报