有关数组定义和初始化的一些问题的补充
byte[] array1,array2[]
byte array3[][]
byte[][]array4
数组赋值时,维数必须相同,不能小维赋大维也不能大维赋小维,上面的生命语句中除了array1为一维数组外其他都是二维数组
数组定义时要先定义第一维的长度因此:
int a[][]=new int[][3]
这样的定义是不正确的
逻辑运算符
String=null;int i=(s!=null&&(s.length()>0)?s.length():1;
s为null不能求length(),但此语句编译可以通过原因就是&&的短路作用。
最后补充两点一点String类型与StringBuffer类型的不同处
public class Tset
{
public static void stringReplace(String text)
{
text=text.replace('j','i');
}
public static void bufferReplace(StringBuffer text)
{
text=text.append("c");
}
public static void main(String[] args)
{
String textString=new String("java");
StringBuffer textBuffer=new StringBuffer("java");
StringRepalce(textString);
bufferReplace(textBuffer);
System.out.println(textString+textBuffer);
}
}
运行结果:javajavac,原因String具有不变性,而对StringBuffer的所有修改时可以实现的。
...
String foo='base';
foo.substring(0,3);
foo.concat("cat");
...
===================
...
String foo='base';
foo.substring(0,3);
foo.concat("cat");
foo+="ball";
...
以上代码第一个的运行结果为foo=base,第二个为=baseball
原因是String具有不变性,一的结果好理解,二是因为在前三条语句执行后foo没有变,但两条语句都产生了一个新的字符串;不同的是第四条语句不但创建了一个新的字符串还把它显示的赋值给了foo。
补充的另一点是java和c不同的地方在判断比如if(),while()等语句执行条件时坚决执行Boolean型,只接受true和false。