持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
1.Java中break与continue关键字的区别
break和continue关键字的使用
| 关键字 | 使用范围 | 循环中使用的作用(不同点) | 相同点 |
|---|---|---|---|
| break: | switch-case 、循环结构中 | 结束当前循环 | 关键字后面不能声明执行语句 |
| continue: | 循环结构中 | 结束当次循环 | 关键字后面不能声明执行语句 |
举例:
/**
* @Author: YuShiwen
* @Date: 2020/11/12 2:24 PM
* @Version: 1.0
*/
public class BreakContinueTest {
public static void main(String[] args) {
//简单测试
for (int i = 1; i < 10; i++) {
if(i % 5 == 0){
continue;//默认结束包裹此关键字最近的一层循环。
}
System.out.print(i);
}
System.out.println();
for (int i = 1; i < 10; i++) {
if(i % 5 == 0){
break;//默认跳出包裹此关键字最近的一层循环。
}
System.out.print(i);
}
//带有标签的测试
System.out.println();
System.out.println("###################");
System.out.println();
label0:
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 10; j++) {
if(j % 5 == 0){
break label0;//结束指定标识的一层循环结构
}
System.out.print("j="+j);
}
System.out.println("i="+i);
}
System.out.println();
label1:
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 10; j++) {
if(j % 5 == 0){
continue label1;//结束指定标识的一层循环结构当次循环,后面的System.out.println("i="+i);不会执行。
}
System.out.print("j="+j);
}
System.out.println("i="+i);
}
}
}
输出结果:
12346789
1234
###################
j=1j=2j=3j=4
j=1j=2j=3j=4j=1j=2j=3j=4j=1j=2j=3j=4j=1j=2j=3j=4
Process finished with exit code 0
2. Java数组元素的默认初始化值
- 数组元素是整型默认初始化值为0
- 数组元素是浮点型默认初始化值为0.0
- 数组元素是char型默认初始化值为0或'\u0000',而非字符型'0'
- 数组元素是boolean型默认初始化值为false
- 数组元素是引用数据类型默认初始化值为null
代码测试:
/**
* @Author: YuShiwen
* @Date: 2020/11/12 7:14 PM
* @Version: 1.0
*/
public class ArrayTest {
public static void main(String[] args) {
//整型默认初始化值为0
int[] arr = new int[3];
for (int i : arr) {
System.out.print(i);
}
System.out.println();
byte[] arr1 = new byte[3];
for (byte b : arr1) {
System.out.print(b);
}
System.out.println();
short[] arr2 = new short[3];
for (short i : arr2) {
System.out.print(i);
}
System.out.println();
//浮点型默认初始化值为0.0
float[] floats = new float[3];
for (float aFloat : floats) {
System.out.print(aFloat);
}
System.out.println();
double[] doubles = new double[3];
for (double aDouble : doubles) {
System.out.print(aDouble);
}
System.out.println();
//char型默认初始化值为0或'\u0000',而非字符型'0'
char[] chars = new char[3];
for (char aChar : chars) {
System.out.print(aChar);
}
System.out.println();
if(chars[0] == 0){
System.out.println("char型默认初始化值为0或'\\u0000',而非字符型'0'");
}
//boolean默认初始化值为false
boolean[] booleans = new boolean[3];
for (boolean aBoolean : booleans) {
System.out.print(aBoolean);
}
System.out.println();
//引用数据类型为null
String[] strings = new String[3];
for (String string : strings) {
System.out.print(string);
}
}
}
测试结果:
000
000
000
0.00.00.0
0.00.00.0
char型默认初始化值为0或'\u0000',而非字符型'0'
falsefalsefalse
nullnullnull
Process finished with exit code 0
3.Java中属性(成员变量)与局部变量的区别
相同点:
- 定义变量的格式:数据类型 变量名 = 变量值 ;
- 先声明,后使用
- 变量都有其对应的作用域
不同点:
- 在类中声明的位置的不同 属性:直接定义在类的一对{}内 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
- 关于权限修饰符的不同 属性:可以在声明属性时,指明其权限,使用权限修饰符。 常用的权限修饰符:private、public、缺省、protected 目前,大家声明属性时,都使用缺省就可以了。 局部变量:不可以使用权限修饰符。
- 默认初始化值的情况:
-
属性:类的属性,根据其类型,都有默认初始化值。 整型(byte、short、int、long):0 浮点型(float、double):0.0 字符型(char):0 (或'\u0000') 布尔型(boolean):false
引用数据类型(类、数组、接口):null
-
局部变量:没有默认初始化值。 意味着,我们在调用局部变量之前,一定要显式赋值。 特别地:形参在调用时,我们赋值即可。
- 在内存中加载的位置: 属性:加载到堆空间中 (非static) 局部变量:加载到栈空间
4.Java中可变个数形参
- jdk 5.0新增的内容
- 具体使用: 可变个数形参的格式:数据类型 ... 变量名 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个,。。。 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。 可变个数形参在方法的形参中,必须声明在末尾 可变个数形参在方法的形参中,最多只能声明一个可变形参。
import java.util.Arrays;
/**
* @Author: YuShiwen
* @Date: 2020/11/14 11:04 AM
* @Version: 1.0
*/
public class MethodTest {
public void show(String ... str){
System.out.println(Arrays.toString(str));
}
//以下被注释起来的方法都是错误例子
// //可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。
// public void show(String[] str){
// System.out.println(Arrays.toString(str));
// }
// //可变个数形参在方法的形参中,必须声明在末尾
// public void show(int i,int ... j,String s){
//
// }
// //可变个数形参在方法的形参中,最多只能声明一个可变形参。
// public void show(int ... i,String ... str){
//
// }
public static void main(String[] args) {
MethodTest MethodTest = new MethodTest();
MethodTest.show();
MethodTest.show("abc");
MethodTest.show("abc","def,ghi");
}
}
输出结果:
[]
[abc]
[abc, def,ghi]
Process finished with exit code 0