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编辑  收藏  举报

导航