论坛首页 Java企业应用论坛

读《Java核心技术卷I 》Java数据类型

浏览 2644 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-12  
OO

1.   Java整形

类型

存储需求

取值范围

int

4字节

-2 147 483 648 ~ 2 147 483 647

short

2字节

-32 768 ~ 32767

long

8字节

...

byte

1字节

-128~127

 

长整形有一个后缀L,十六进制有一个前缀0x,八进制有有一个前缀0

浮点型有两种:float4字节),double8字节)。小数默认为double类型,可以在小数后加D表示,当小数后标注F时表示float类型。所以将一个小数赋值给一个浮点变量时,无法通过编译,需要强制转化或者在小数后加F

命令System.out.println(2.0-1.0);打印出0.8999999999999999,而不是0.9,因为浮点数值是采用二进制系统表示的,而在二进制系统中无法精确表示1/10,就像十进制无法表示1/3一样。

char(16)boolean只有两个值,区别于C++,当把非truefalse的值赋值给boolean变量时,编译通不过。

2.   特殊字符的转义序列符

转义序列

名称

Unicode

\b

退格

\u0008

\t

制表

\u0009

\n

换行

\u000a

\r

回车

\u000d

\”

双引号

\u0022

\’

单引号

\u0027

\\

反斜杠

\u005c

3.   判定Unicode字符是否属于字母的方法可以使用Character中的JavaIdentifierStart JavaIdentifierPart方法。

4.   常量用final修饰;类常量用static final设置,可以在一个类中的多个方法中使用;如果类常量被设置为public,则其他类的方法也可以使用这个常量。类常量定义于main方法的外部,使用方法如:

     public class Constants2{

         public static void main(String[] args){

              double paperWidth=8.5;

              double paperHeight=11;

              System.out.println(“Paper size in centimeters:”+

paperWidth*CM_PER_INCH+”by”+paerHeight*CN_PER_INCH);

}

public static final double CM_PER_INCH=2.54;

}

5.   三元运算符的表示方法:x<y?x:y

6.   JDK5.0开始,不必再数学方法名前添加前缀“Math.,而只需在头文件的顶部添加下列代码就可以了:import static java.long.Math.(静态导入)

7.   数值之间的合法转换

byteàshortàintàlongàfloatàdouble

charàint

强制类型转化的语法格式是在圆括弧中给中想要转化的目的类型,随后紧跟待转化的变量名。如,

double x=9.997

int nx=(int)x;

8.   运算符优先级(从上到下递减,同行相同)

[].()(方法调用)

! ++ -- +/-(一元运算) ()强制类型转换 new

* / %

+ -

<< >> >>>

< <= > >= instanceof

== !=

&

^

|

&&

||

?:

= += -= *= /= %= |= ^= <<= >>= >>>=

9.   String

     (1)  构造方法

         1)   构造空字符串String();

         2)   利用字节数组构造String(byte[] bytes);

         3)   利用字符数组构造 String(byte[] chars);

     (2)  比较

compareTo(String anotherString):大于参数字符串则返回一个大于0的值,=则返回0,小于则返回一个小于0的值

         compareToIgnoreCase(String str);不考虑大小比较两个字符串

         equals(Object anObject):比较字符串与制定的对象

         equalsIgnoreCase(String anotherString):不考虑大小比较

     (3)  索引

         indexOf(int ch):返回制定字符在此字符串第一次出现处的索引

         indexOf(int ch, int fromIndex);

         lastIndexOf返回最后一次出现的指定字符在此字符串中的索引

         indexOf(String str):返回第一次出现的制定字符串中的索引

         indexOf(String str, int fromIndex);

     (4)  返回长度

         length();

     (5)  替换

         String repalce(char oldChar, char newChar) newChar替换此字符串中出现的所有oldChar

         Sting replaceAll(String regex, String replacement) 使用给定的replacement字符串替换此字符串与正则表达式匹配的每个子字符串

         String replaceFirst(String regex,Stirng replacement)

         String[] split(String regex) 根据正则表达式的匹配来拆分此字符串

         String[] split(String regex, int limit) 其中,limit参数控制模式应用的次数,因此影响结果数组的长度。如果limit>0,则模式将被应用n-1次,数组的长度将不会大于n,数组的最后项将包含超出最后匹配的定界符的所有输入。如果limit为非正,模式将被应用尽可能多的次数,而且数组可以是任意长度。

     (6)  匹配

         endsWith(String suffic):测试此字符串是否以指定的后缀结束

         startsWith(String prefix);测试此字符串是否以之地鞥的前缀开始

         startsWith(String prefix, int toffset) 从指定索引开始,...

     (7)  子串

         subString(int beginIndex, int endIndex) 返回所以区间[beginIndex, endIndex)的子串

         subString(int beginIndex) 返回beginIndex到末尾的子串

     (8)  编辑

         char[] toCharArray()将此字符串转化为一个新的字符数组。

          String toUpperCase()

         String toLowerCase()

         trim() 返回字符串的副本,忽略前导空白和尾部空白

     (9)  值传递

         String valueOf(char c);

         String valueOf(char[] data, int offset, int count);其中offset为子数组的第一个字符的索引,count参数为Stirng值的长度。

     (10) 检测字符串是否相等

         s.equal(t),其中st既可为常量也可为变量。不区分大写写比较可用函数

s.equalIgnoreCase(t).

==运算符用来检测的是否放在同一位置,

字符串常量是共享的,即所有的字符串常量放在同一个存储池中。

10.  Swing 对话框的使用(java.swing.*)

     String input=JOptionPane.showInputDialog(promptString);

     返回值是用户输入的字符串,promptString为提示信息。如果需要返回的数值或Double,可以通过Integer.parseInt(input);Double.parseDouble(input).

11.  c++中,可以在嵌套的块中重定义一个变量,在内层定义的变量会覆盖在外层定义的变量。在Java中不允许这样的重定义。

     for循环的初始段定义的变量的作用范围是整个for循环。

     switch的语法格式:

     switch(choice){

         case 1:

             

              break;

         default:

             

              break;

}

特殊的breakcontinue的用法:

label:

{

     if(condition) break label;

}

//jump here when the break statement executes

label:的后面没有{}时,则跳转后它的后一个语句块,入if执行后面的语句一样。continue的用法同理。

12.  大数值

     BigIntegerBigDecimal(java.math)可处理任意长度的数值,其中BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。

     (1)  将普通的数值转化为大数值,如BigInteger a=BigInteger.valueOf(100);

     (2)  不能使用普通的运算符号,替代为:

         add,subtract,mutiply,divide,mod

     (3)  比较:compareTo,相等返回0,小于返回负数,大于返回整数。

13.  数组

(1)  申明数组的两种形式:

          int[] a=new int[100]; 或者 int a[]=new int[100];

          获取数组中的元素个数:a.length

          for each循环:

         语法:   for(int element:a){

    

}

         其中,a是数组或者是实现了iterator的类如(ArrayList

     (2)  java中的数组相当于C++中的数组指针,不过只能做[]运算,不能对数组变量作+运算来取地址。

(java.lang.)System.arrayCopy(from,fromIndex,to,toIndex,count);方法实现将一个数组from从索引fromIndexcount个元素拷贝到to的以索引toIndex为下表的后面。

     (3)  Arrays.sort(a);//实现数组的从小到大排序。

         (java.util.)Arrays提供的其他常用静态方法:

1)   static int binarySerch(type[]a,type v)

erayutil.();x.y();

     使用二分查找自a中找v

     2)   static void fill(type[] a, type v);

         将数组的所有元素设置为v

     3)   static  boolean equals(type[] a, type[] b);

         如果两个数组的长度相同,并且下表相同的元素都对应相等,则返回true

     (4)  数组初始化以及匿名数组

         初始化:int smallPrimers={1,2,3};

         申明匿名数组:new int[]{1,2,3}

         可以将一个匿名数组赋值给一个数组变量:int smallPrimer=new int[]{1,2,3}

14.  (1)  二维数组的申明:

         double[][] balances;

         balances=new double[NYEARS][NRATES];

     (2)  二维数组的初始化:

         int[][] magicSqure=

{

     {16,3,2},

     {4,15,4}

};

     (3)  由于可以单独地存取数组的某一行,所以可以对两行进行交换或其他操作。

     (4)  当需要创建不规则的数组时,可以单独分配各行的空间。如:

         int[][] olds=new int[MMAX+1][];

         for(int n=0;n<=MMAX;n++){

              odds[n]=new int[n+1];

}

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics