循环等
println输出会换行,print不会。
定义常量用final。final int c = 10;
if括号里不能是0或1,只能是布尔变量(TRUE/FALSE)
标号:
OUT:
for(...)
{
for
{
for
{
....;
break OUT;
}
}
}
break语句直接跳出OUT标明的for语句。标号可以自定义。
for-each循环
格式:for(<类型> <变量> : <数组>) …
for(int k : data){......}
k在第一轮循环等于data[0];第二轮等于data[1]…(data为数组)
数组
数组定义: <类型> [ ] 数组名 = new <类型> [个数]
int [] a = new int[10]
每个数组有一个内部成员length,会告诉你它的元素的数量。
所以遍历a数组最好写成for(i=0; i<a.length; ++i)
而且有扩展性。
Java会自动初始化数组为0。
注意:
public class Hello {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] a = new int[10];
a[0] = 5;
int[] b = a;
System.out.println(a[0]);
b[0] = 16;
System.out.println(a[0]);
System.out.println(b[0]);
}
}
输出的值分别是 5 16 16.
因为a虽然是一个变量,但在它里面没有那个数组,它是管理着另外某个位置的10个int的数组。
int[] b = a
让b管理a所在的数组(类似于C中的指针)。所以之后的a[0]与b[0]都是同样的对象。
数组变量之间的赋值就是管理权限的赋予。
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int[] a = {1,2,3,4,5};
int[] b = {1,2,3,4,5};
System.out.println(a==b);
}
}
输出的是false.
因为初始化了两个不同的对象(内存地址不同)。
所以复制数组必须遍历拷贝。
二维数组初始化:
int [][] c= {
{1,2,3,4},
{1,2,3},
};
最后的逗号可要可不要,省略的为0.
遍历二维数组a[][]
:
for(int i=0;i<c.length;i++)
{
for(int j=0;i<c[i].length;j++)
{
......;
}
}
注意是c[i].length
.
字符串
Java用的是Unicode编码。
a排在A的后面,即a > A
.
char类型的变量只能放一个字符/数字/汉字。char c = 'a'
.
逃逸字符:
\b 回退一格(在eclipse中显示为一个框框)
\t 到下一个表格位(对齐)
\n 换行
\r 回车
包裹类型:
Boolean —— boolean
Character —— char
Integer —— int
Double —— double
可以获得该类型的最大最小值。
Character.toLowerCase('A')
可以将A转化为小写。
创建字符串:
String s = new String ("astring")
可以用+连接两个字符串,若不是字符串,系统会把它转换为字符串再操作。
s=in.nextLine();
会输出完整字符串;
而s=in.next();
输出第一个空格前的。
用.equals()
判断两个字符串内容是否相等。
System.out.println(str1.equals(str2));
用.compareTo()
判断两个字符串的大小。
结果是1就是大,0是相等,-1是小。
用.length
获得字符串的长度。
用.charAt(index)
访问字符串里的单个字符。
index是数字,第一个字符的index是0,与数组一样。
字符串不能用for-each循环。
用.substring(n)
得到从n号位置到末尾的子串;
用.substring(b,e)
得到从b号位置到e号位置之前的子串。
用.indexOf()
寻找字符;(-1表示不存在)
s.indexOf(c,n)
从n号位置开始寻找c字符。
从右边开始找用.lastIndexOf()
.
// 用.trim()
把字符串两端空格删掉。
用.replace(c1,c2)
将字符串中所有的c1换成c2.
用.toLowerCase()
将字符串都变为小写;
.toUpperCase()
转换为大写。//
注:所有的字符串都是不可变的,对它们的操作的结果都是创造新的字符串出来。
在1.6更高的版本可以在switch-case
中使用字符串。
switch(s){
case "this": ... break;
case "that": ... break;
}
函数
函数头:public static
+返回类型+函数名().
public static void sum(int a, int b)
{
......
}
void 函数名不能使用带值的return。
当函数期望的参数类型比调用函数时给的值得类型宽的时候,编译器能替你把类型转换好。
char->int->double
越右边越宽。
Java调用函数时,永远只能传值给函数。(与C一样)