>>=
op1>>=op2
op1=op1>>op2
>>>=
op1>>>=op2
op1=op1>>>op2
1.1.2.5其他运算符
Operator
Description
?
:
Shortcutif-elsestatement
[]
Usedtodeclarearrays,createarrays,andaccessarrayelements
.
Usedtoformqualifiednames
(params)
Delimitsacomma-separatedlistofparameters
(type)
Casts(converts)avaluetothespecifiedtype
new
Createsanewobjectoranewarray
instanceof
Determineswhetheritsfirstoperandisaninstanceofitssecondoperand
●数组定义要使用
float[]arrayOfFloats=newfloat[10];
●Instanceof操作符测试第一个操作数是否是第二个操作数的实例
op1instanceofop2
op1必须是变量名称,op2必须是类名称。
1.1.3流程控制语句
StatementType
Keyword
looping
while,do-while,for
decisionmaking
if-else,switch-case
exceptionhandling
try-catch-finally,throw
branching
break,continue,label:
return
1.2对象基础和简单数据对象
1.2.1对象的生命周期
1.2.1.1建立对象
需要注意的是,类的直接赋值传递的是地址引用,因为它是引用类型。
1.2.1.2使用对象
1.2.1.3清除未使用对象
一般来说,系统会自动进行内存的垃圾收集,释放内存,当然,也可以使用System类中的gc方法来手动收集。
在某些特定情况下,我们可能需要手动释放一些资源,在Java的类中有一个finalize方法用来给用户一个这样的机会进行手动资源释放。
可以通过重载finalize方法来实现,如果重载了finalize方法,就需要在方法中最后执行super.finalize来调用超类的此过程。
1.2.2Characters和Strings
Java平台包括三种字符串处理的类。
●Character——可以用来保存一个单独字符的类。
●String——可以用来保存不能更改的顺序字符串。
●StringBuffer——用于保存和操作可变的顺序字符串。
1.2.2.1Characters
Character类型对象用来保存一个单独的字符值。
当需要使用一个字符对象而不是一个简单类型的char变量的时候使用,因为作为对象传递的是地址而不是值。
当需要传递一个饮用的时候才使用。
1.2.2.2两个字符串类
Java平台提供了两个类,String和StringBuffer用于保存和操作字符串类型的数据。
String类提供定值的字符串操作。
StringBuffer类用于可能会变更的字符串。
因为String类型是常量类型,所以更加高效。
1.2.2.3字符串访问方法
Java的字符串是从0开始计数的。
●indexOf(intcharacter)
●lastIndexOf(intcharacter)
Returntheindexofthefirst(last)occurrenceofthespecifiedcharacter.
●indexOf(intcharacter,intfrom)
●lastIndexOf(intcharacter,intfrom)
Returntheindexofthefirst(last)occurrenceofthespecifiedcharacter,searchingforward(backward)fromthespecifiedindex.
●indexOf(Stringstring)
●lastIndexOf(Stringstring)
Returntheindexofthefirst(last)occurrenceofthespecifiedString.
●indexOf(Stringstring,intfrom)
●lastIndexOf(Stringstring,intfrom)
Returntheindexofthefirst(last)occurrenceofthespecifiedString,searchingforward(backward)fromthespecifiedindex.
1.2.2.4其他类型转换为字符串
可以使用ToString来转换为字符串,也可以使用valueOf函数来转换其他类型为字符串。
System.out.println(String.valueOf(Math.PI));
1.2.3字符串转换为其他类型
可以使用其他类型的valueOf函数来转换。
StringpiStr=“3.14159”;
Floatpi=Float.valueOf(piStr);
1.2.3.1String类型的动态拷贝
默认情况下,如果把一个字符串赋值给另一个字符串,那么两个字符串是相同的,但是如果另一个的值改变了,系统会自动拷贝一个到新的内存并且建立一个新的字符串。
这也是和String类型不可修改相一致的。
Strings1="hello";
Strings2=s1;
System.out.println("s1="+s1+";s2="+s2);
System.out.println("System.identityHashCode(s1)="+System.identityHashCode(s1));
System.out.println("System.identityHashCode(s2)="+System.identityHashCode(s2));
s1+="world";
System.out.println("\ns1="+s1+";s2="+s2);
System.out.println("System.identityHashCode(s1)="+System.identityHashCode(s1));
System.out.println("System.identityHashCode(s2)="+System.identityHashCode(s2));
输出:
s1=hello;s2=hello
System.identityHashCode(s1)=2452092
System.identityHashCode(s2)=2452092
s1=helloworld;s2=hello
System.identityHashCode(s1)=7474923
System.identityHashCode(s2)=2452092
1.2.4数值
1.2.4.1格式化数字
NumberFormat类和DecimalFormat类研究一下,在java.text中。
1.2.4.2使用预定义格式
可以使用NumberFormat类中的几个方法来格式化数字。
Doubleamount=newDouble(345987.246);
NumberFormatnumberFormatter;
StringamountOut;
numberFormatter=NumberFormat.getNumberInstance(currentLocale);
amountOut=numberFormatter.format(amount);
System.out.println(amountOut+""+currentLocale.toString());
类似的还有getCurrencyInstance和getPercentInstance
1.2.4.3自定义格式
DecimalFormatmyFormatter=newDecimalFormat(pattern);
Stringoutput=myFormatter.format(value);
System.out.println(value+""+pattern+""+output);
1.2.4.3.1定义模式
pattern:
=subpattern{;subpattern}
subpattern:
={prefix}integer{.fraction}{suffix}
prefix:
='\\u0000'..'\\uFFFD'-specialCharacters
suffix:
='\\u0000'..'\\uFFFD'-specialCharacters
integer:
='#'*'0'*'0'
fraction:
='0'*'#'*
Notation
Description
X*
0ormoreinstancesofX
(X|Y)
eitherXorY
X..Y
anycharacterfromXuptoY,inclusive
S-T
charactersinS,exceptthoseinT
{X}
Xisoptional
1.2.5数组
Java中的数组是从0下标开始的。
1.2.5.1建立和使用数组
publicclassArrayDemo{
publicstaticvoidmain(String[]args){
int[]anArray;//declareanarrayofintegers
anArray=newint[10];//createanarrayofintegers
//assignavaluetoeacharrayelementandprint
for(inti=0;ianArray[i]=i;
System.out.print(anArray[i]+"");
}
System.out.println();
}
}
1.2.5.2对象数组
1.2.5.3ArraysofArrays
publicclassArrayOfArraysDemo{
publicstaticvoidmain(String[]args){
String[][]cartoons=
{
{"Flintstones","Fred","Wilma","Pebbles","Dino"},
{"Rubbles","Barney","Betty","BamBam"},
{"Jetsons","George","Jane","Elroy","Judy","Rosie","Astro"},
{"ScoobyDooGang","ScoobyDoo","Shaggy","Velma","Fred","Daphne"}
};
for(inti=0;iSystem.out.print(cartoons[i][0]+":
");
for(intj=1;jSystem.out.print(cartoons[i][j]+"");
}
System.out.println();
}
}
}
1.2.5.4数组复制
使用系统提供的arraycopy方法可以有效的从一个数组向另一个复制数据。
publicstatic
voidarraycopy(Objectsource,
intsrcIndex,
Objectdest,
intdestIndex,
intlength)
两个对象分别是源和目标数