程序流程控制
1 顺序流程
2 分之流程
在没有break的情况下小心case穿透!正确使用可以用case连续。 |
Switch
不需要Boolean值的分支语句
格式:switch(参数){
参数必须是int类型的或者能转换成int类型的值 |
代码
[<break;>]
break后面不需要加其他语句,除了default。 |
Default;//当所有的条件都不成立的时候使用它
代码
}
类型:for while,do_while。for each
初始值 |
格式:for(初始值;conditions1;迭代表达式;){
statements
False |
条件 |
Conditions1 |
迭代表达式 |
End |
True |
块作用域:是指一对花括号括起来的若干条简单的Java语句。块确定了变量的作用域。 一个块可以嵌套的另一个块中。 public static void main(String[] args){ int n; ----- { int k; --- }//k is only defined up to here } //不能在嵌套的两个快中声明同名的变量。 |
1 当for语句的第一部分声明了一个变量之后,这个变量的作用域就是for循环的整个循环体。 2 吐过for语句内部定义了一个变量,那么这个变量值不能在循环体外使用。 3 可以独立的在不同的for循环中定义同名的变量。 4 for语句是while循环的一种便捷形式。 |
<循环执行语句>
迭代表达式
}
for each //是在JDK5.0后加入的机制,只是对数据的循环遍历
用途:用到数组和几何对象中
for each 的内部机制是一个Iterator迭代器的机制来说实现数据的遍历。
for each 语句不能自动地处理二维数组的每一个元素。它按行,即按一维数组处理的
访问:for(double row:balances)
for(double b:row)
//do something with b
多重选择-----switch语句。<不怎么提倡>
格式:
switch(choice)
{ case 1:-----break;
case 2:-----break;
-----------------
case n:-----break;
default:----break;
}
中断流程控制语句
1 break语句
不带标签的break 语句: 只能跳出语句块,不能跳入语句块。
带标签的break语句:用于跳出多重嵌套的循环语句。
<标签必须防止在最外层的循环之前,并且必须紧跟一个分号>
2 continue语句
作用:将控制转移到最内层循环的首部。
如果continue语句用于for循环中,就可以跳到for循环的“更新”部分。
带标签的continue语句将跳到与标签匹配的循环首部。
格式:continue 标号名 <定义在程序中外层循环语句的前面,用来标识这个循环结构。>
3 return语句
格式:return 表达式;
Break 执行循环体外面的其他语句
Continue 只终止本次循环,而不会影响下次循环。
大数组
如果基本的整数和浮点数精度不能满足需求,可以用Java Math中的 BigInteger(任意精度的整数运算)和BigDecimal(任意精度的浮点计算)
Eg:BigInteger a = BigInteger.valueOf(100);
//使用静态的valueOf方法把普通数组转换为大数组。
返回这个大整数和另一个大整数的和,差,积,商以及余数。 int compareTo(BigInteger other) 如果这个大整数小于另外一个大整数,则返回负数; 如果等于,返回0;如果小于,返回正数。 |
BigInteger add(BigInteger other)
BigInteger substract(BigInteger other)
BigInteger multiply(BigInteger other)
BigInteger divide(BigInteger other)
BigInteger mod(BigInteger other)
eg: BigInteger c = a.add(b);//c=a+b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));//d=c*(b+2)
<java 没有提供运算符的重载功能>
数组
数组是一种数据结构,用来存储同一类型值得集合。
<在声明变量时,需要指出数组类型(数组元素类型后跟[]和数组的名字)>
数组初始化器以及匿名数组:
1 一种创建数组对象前同时赋予出是值得简化书写形式:
int [] smallPrimes={1,2,5,3,4,6,8,7,9};
2 还可以初始化一个匿名数组:
new int[]{17,19,1,52,5,4,6,3};
使用此种语法形式可以在不创建新变量的情况下重新初始化一个数组。
Eg: smallPrimes = new int[]{1,2,3,4,5,6};
int[] anonymous = {1,2,3,4,5,6};
smallPrimes=anonymous;
数组拷贝
Eg:int[] luckyNumbers=smallPrimes;
luckyNumbers[5]=12;//new smallPrimes is also 12
语法格式:System.arraycopy(from,fromindex,to,toindex,count);
目标数组放置拷贝元素的起始下标 |
目标数组 |
任意类型数组 |
拷贝个数 |
原数组中待拷贝元素的起始下标 |
Eg: int[] smallPrimes = {2,3,5,7,11,13};
int[] luckyNumbers ={12,13,45,56,89,74,58,69,100};
System.out.println(smallPrimes,2,luckyNumbers,3,4);
for(int i=1;i<luckyNumbers.length;i++)
System.out.println(i+”:”+luckyNumbers[i]);
<此方法只复制元素,如果数组元素是引用型变量,则只复制引用,不复制对象实体。>
命令行参数:
<每一个Java应用程序都有一个代String[]args 参数的main方法。这个参数表明main方法将接受一个字符串数组,也即命令行参数。>
注:Java应用程序的main方法中,程序名并没有存储在args数组中
Eg: java Message –h world
Args[0] 是 “-h”,而不是“Message”或“Java”。
数组排序
对数值类型数组进行排序,可使用Arrays类中的sort方法
int[] a = new int[10000];
Arrays.sort(a);//使用了优化的快速排序算法。
多维数组
<适用于表示表格或更加复杂的排列形式>
数组:
定义:用于保存相同数据类型的一种机制。
1 是一种引用数据类型。
2 数组可以保存基本数据类型和引用数据类型,但是不能保存在一个数组中。但是在vector集合对象中可以保存不同数据类型。
定义方式: 类型【】 变量名;
类型 变量名【】;
动态赋值:数组的定义,创建,赋值是分开的。
静态赋值:数组的定义,创建,赋值是一起的。同时根据数组元素的值来指定数组的长度。
在Java中不可以在定义式制定数组长度,在创建数组时来制定数组长度,数组长度最少为0.
数组内存:数组下标从0开始,到length-1 (length是一个属性不是一个方法)
Length方法用来得到字符串的字符个数
int 类型的length 调用格式:int a ; a.length
String 类型的length调用格式:String b; b.length();
使用数组变量名加数组下标来得到指定的元素。
Name
Sex age |
Eg:int[] a = new int[3];
Person[] p = new Person[3];
p |
a[0]
a[1]
a[2] |
Name1 Sex1
Age1 |
Name2
Sex2 Age2 |
在创建对象时包含的对象变量指向的任然是原来的堆,而原来的对象变量则指向对象变量所在的栈。
所有的Java对象都存储在堆中,当一个对象包含另一个对象变量时,这个变量依然包含的是指向两一个堆对象的指针。
返回值是什么类型就返回什么类型!
Eg: int【】 返回类型为 int【】类型。
int【】【】 返回类型为 int【】【】类型。
Public int[] Method(){
Int[]a = new int[100];
Return a[];
}
Public int[][] Method(){
Int[][]a = new int[100][100];
Return a[][];
}
多维数组:
定义格式:int【】【】a
int a【】【】
在使用new创建多为数组时不需要对每一维都指定大小,只需要给出左边的长度即可。
得到多维数组的元素时通过“数组名+各位的下标”