public static void main(String[] args) { int i; for(i=1;i<10;i++) { if(i%3==0) break; System.out.println(i); } }
3.2 contiue:结束本次循环进入下一次循环
1 2 3 4 5 6 7 8
public static void main(String[] args) { int i; for(i=1;i<11;i++) { if(i%3==0) continue; System.out.println(i); } }
3.3 return:离开语句所在的方法
1 2 3 4 5 6 7 8
public static void main(String[] args) { int i; for(i=1;i<11;i++) { if(i%3==0) return; System.out.println(i); } }
小知识: 三目运算符也就是if-else的简写形式,Switch中不是每个条件都需要break
数组(与C大致一同,但有不同)
一、一维数组
定义:类型[ ] 数组名 = new 类型[长度];
数组中存有默认值0,而在引用类型[ ]中为null;
如果在定义前,已经知道数组里存放的内容,那可以简单定义为:
类型[ ] 数组名 = {值1,值2,…,值n};
类型[ ] 数组名 = new 类型[ ]{值1,值2,…,值n};
动态初始化如:int[ ] array = new int[4];
静态初始化如:int[] array = new int[]{1,2,3,4};
但是像int[] array = new int[3]{1,2,3};就是错误的写法
这样也是错的,int[ ] array;array[ ] = {1,2,3};也是错的!!!
而这样是可以的:把String names[ ] = new String[ ]{“加油”,“冲呀”};
拆为:String names[ ] ;和 names[ ] = new String[ ]{“加油”,“冲呀”};
创建一个随机数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import java.util.Random; //导入包
public class Test { public static void main(String[] args) { Random rand = new Random(); int[] a = null; a = new int[rand.nextInt(10)]; //开辟内存空间,长度是[0,10)的随机数 System.out.println("数组的长度:"+a.length); for(int i=0;i<a.length;i++) { a[i] = rand.nextInt(100); System.out.println("a["+i+"]="+a[i]); } } }
public class Test { public static void main(String[] args) { int nums[] = {100,5}; int max = nums[0]; int min = nums[0]; for(int i=1;i<nums.length;i++) { if(nums[i]>max) { max = nums[i]; } } for(int i=1;i<nums.length;i++) { if(nums[i]<min) { min = nums[i]; } } System.out.printf("该数组中最大值为:%d,最小值为:%d",max,min); } }
二、二维数组 定义:数据类型[ ][ ] 数组名 = new int[行数][列数];
如:int[ ][ ] array = new int [3][2];或者int[ ][ ] array; array = new int[3][2];
我这里将这个理解为线代里的行列式或者矩阵
1 2 3 4 5 6 7 8 9 10 11
public class Test { public static void main(String[] args) { int[][] nums; nums = new int[3][2]; for(int i=0;i<nums.length;i++) { for(int j=0;j<nums[i].length;j++) { System.out.println("nums["+i+"]["+j+"]="+nums[i][j]); } } } }
再举例列数不定
1 2 3 4 5 6 7 8 9 10 11 12 13
public class Test { public static void main(String[] args) { int[][] nums = new int[3][]; nums[0] = new int[2]; nums[1] = new int[2]; nums[2] = new int[] {1,2}; for(int i=0;i<nums.length;i++) { for(int j=0;j<nums[i].length;j++) { System.out.println("nums["+i+"]["+j+"]="+nums[i][j]); } } } }
如果知道数组中存的值还可以:
1 2 3 4 5 6 7 8 9 10 11
public class Test { public static void main(String[] args) { int[][] nums = {{1,2},{1,2,3},{2}}; for(int i=0;i<nums.length;i++) { for(int j=0;j<nums[i].length;j++) { System.out.println("nums["+i+"]["+j+"]="+nums[i][j]); } } }
}
sample计算工资总额
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class Test {
public static void main(String[] args) { int sum = 0; int[][] nums = {{1,2},{1,2,3},{2}}; for(int i=0;i<nums.length;i++) { System.out.printf("第%d个人的销售总额为:",(i+1)); for(int j=0;j<nums[i].length;j++) { sum += nums[i][j]; } System.out.println(sum); sum = 0; //清零便于下一次计算 } }
}
三、多维数组 定义:数据类型[ ][ ]…[] 数组名 = new int[ ][ ]…[]
另外在Java中null可以为引用类型赋值,作为初始值
1 2 3 4 5 6
public static void main(String[] args) { String name = null; name = "冲冲冲"; System.out.println(name); }
public static void main(String[] args) { Random random = new Random(); int buf; int[] nums = new int[random.nextInt(10)]; for(int i=0;i<nums.length;i++) { nums[i] = random.nextInt(100); } for(int i=0;i<nums.length-1 ;i++) { for(int j=0;j<nums.length-i-1;j++) { if(random.nextBoolean()) { buf = nums[j]; nums[j] = nums[j+1]; nums[j+1] = buf; } } } for(int x:nums) { System.out.println(x); } }
}
方法:
1.方法的定义
修饰符 返回值类型 方法名(参数列表){
方法体
[return 返回值]
}
两数比较大小的例子
1 2 3 4 5 6 7 8 9 10 11
public class Test { public static int max(int num1,int num2) { int result; if(num1>num2) { result = num1; }else { result = num2; } return result; } }
2、方法的使用 Add:this代表本类对象
哪个对象调用这个方法this就是它;
比如Person p1 = new Person(); 此时this代表p1;
如果修饰符没有写,就默认为default
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
public class Person { String name; int age; void talk() { System.out.println("冲冲冲!!!"); System.out.println("我是"+name+"今年"+age+"岁"); } //当局部变量与成员变量重名的时候用this区分 void setName(String name){ this.name = name;//将局部变量赋值给成员变量 } void setAge(int age) { this.age = age; } }
Person1test.java
1 2 3 4 5 6 7 8 9 10
public class Person1Test {
public static void main(String[] args) { Person p1 = new Person(); p1.setName("1"); //调用方法 p1.setAge(32); p1.talk(); }
}
3、方法中的形参与实参 形参:隶属于方法体,是方法的局部变量
在调用方法时,实参和形参在数量、类型、顺序上必须保持一致;
4、方法的重载
三要素:必须在同一个类;必须方法名相同;必须参数列表不同(个数与类型)
注意:重载定义与返回值无关
1 2 3 4 5 6 7 8 9 10 11
public class Test { public int add(int a,int b) { return a+b; } public int add(int a,int b,int c) { return a+b+c; } public float add(float a,float b) { return a+b; } }
public class Person { private String name; private int age; private void talk() { System.out.println("我是"+name+",今年:"+age+"岁"); } private void say() { talk(); //this.talk(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
7、方法的递归调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
public class Test { public int add(int n){ int result = 0; for(int i=1;i<n+1;i++) { result += i; } return result; } public int addRecursion(int n) { if(n==1) { return n; }else { return n+addRecursion(n-1); } } }
8、代码块 格式:{ 语句}
分为四种;
1、普通代码块;
2、构造代码块;
3、静态代码块;
4、同步代码块;
//普通代码块:方法名后或方法体内用一对“{}”括起来的数据库;
1 2 3 4 5 6 7 8 9 10
public class Test { public static void main(String[] args) { { int x = 10; System.out.println("普通代码块内,x="+x); } int x = 100; System.out.println("x="+x); } }
public class Test { public static void main(String[] args) { int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; int count = getValueNumFromArray(oldArr, 0); int[] newArr = new int[oldArr.length-count]; copyValue(oldArr, newArr); printArray(newArr); } public static int getValueNumFromArray(int[] arr,int val) { int count = 0; for (int i = 0; i < arr.length; i++) { if(arr[i]==val) { count++; } } return count; } public static void copyValue(int[] arr1,int[] arr2) { int j = 0; for (int i = 0; i < arr1.length; i++) { if(arr1[i]!=0) { arr2[j] = arr1[i]; j++; } } } public static void printArray(int[] array){ for (int i = 0; i < array.length; i++) { System.out.println(array[i]+"\t"); } System.out.println(""); } }
两个数之间的随机数
1 2 3 4 5 6 7 8 9 10 11 12 13
public class Test{ public static void main(String[] args) { int num1 = 1; int num2 = 16; for(int i=0;i<100;i++) { System.out.println(getRandom(num1, num2)); } } public static int getRandom(int num1,int num2) { int result = (int)Math.random()*(num2-num1)+num1; return result; } }