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。
浮点型有两种:float(4字节),double(8字节)。小数默认为double类型,可以在小数后加D表示,当小数后标注F时表示float类型。所以将一个小数赋值给一个浮点变量时,无法通过编译,需要强制转化或者在小数后加F。
命令System.out.println(2.0-1.0);打印出0.8999999999999999,而不是0.9,因为浮点数值是采用二进制系统表示的,而在二进制系统中无法精确表示1/10,就像十进制无法表示1/3一样。
char(16位),boolean只有两个值,区别于C++,当把非true和false的值赋值给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),其中s和t既可为常量也可为变量。不区分大写写比较可用函数
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;
}
特殊的break与continue的用法:
label:
{
if(condition) break label;
}
//jump here when the break statement executes
当label:的后面没有{}时,则跳转后它的后一个语句块,入if执行后面的语句一样。continue的用法同理。
12. 大数值
BigInteger和BigDecimal(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从索引fromIndex的count个元素拷贝到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];
}