JAVA与C语言之间的差异(二)
一、while循环,do while循环
众所周知,while循环的结构是这样的:
while(循环条件) {循环语句;}
在C语言中,可以直接再循环条件处写1,表示死循环,直到执行break才可以跳出,但是在JAVA中不可以,JAVA中这里的表达式必须是通过关系运算符进行判断后结果为true或false才可以!!!
do while循环同理!!!(很少使用)
二、方法(就是C语言中的函数)
1.方法的格式:
修饰符 返回值类型 ⽅法名称([参数类型 形参 ...]){⽅法体代码;[return 返回值];}
可以通过下面的例子了解:
//检测⼀个年份是否为闰年public static boolean isLeapYear(int year){if((0 == year % 4 && 0 != year % 100) || 0 == year % 400){return true;}else{return false;}}//两个整数相加public static int add(int x, int y) {return x + y;}
#注:
(1)如果⽅法有返回值,返回值类型必须要与返回的实体类型⼀致,如果没有返回值,必 须写成void
(2)⽅法名字:采⽤⼩驼峰命名
(3)在Java当中,⽅法必须写在类当中
(4)在Java当中,⽅法不能嵌套定义
(5)在Java当中,没有⽅法声明⼀说
函数的调用同C语言一样!!!
#注:JAVA可以直接返回一个数组,这是C语言中办不到的!!!
(直接 “return 数组名”)
2.方法的重载
C语言中不支持两个同名的函数同时存在,而在我们高贵的JAVA中可以!!!
方法的重载可以简单理解为有几个同名的方法同时存在,他们之间参数列表不同,这样编译器在编译代码时会对实参进行推演,根据推演结果确定调用哪个方法(简单来说就是那个最合适用哪个)
public class TestMethod {public static void main(String[] args) {add(1, 2); // 调⽤add(int, int) add(1.5, 2.5); // 调⽤add(double, double) add(1.5, 2.5, 3.5); // 调⽤add(double, double, double) }public static int add(int x, int y) {return x + y;}public static double add(double x, double y) {return x + y;}public static double add(double x, double y, double z) {return x + y + z;}}
三、数组
JAVA中数组的写法与C语言中有所区别:
1.一维数组
两种数组创建方法:
//动态初始化:在创建数组时,直接指定数组中元素的个数
int[] array = new int[10];// 静态初始化:在创建数组时不直接指定数据元素个数,⽽直接将具体的数据内容进⾏指定
int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
#注:如果没有对数组进行初始化,那么将会默认存储对应的0值,boolean默认为FALSE,引用类型(String)默认为null。
在JAVA中,用数组对象.length来获取数组长度.
对于数组的遍历(就是打印一遍),JAVA中有着快捷的方法:
//for-each遍历数组int[] array = {1, 2, 3};for (int x : array) {System.out.println(x);}
2.null
null 在Java中表⽰"空引⽤",也就是⼀个不指向对象的引⽤
int[] arr = null;
System.out.println(arr[0]);// 执⾏结果
Exception in thread "main" java.lang.NullPointerException at Test.main(Test.java:6)
null 的作⽤类似于C语⾔中的NULL(空指针),都是表⽰⼀个⽆效的内存位置.因此不能对这个内存进⾏ 任何读写操作.⼀旦尝试读写,就会抛出NullPointerException
3.数组转字符串
import java.util.Arraysint[] arr = {1,2,3,4,5,6};String newArr = Arrays.toString(arr);System.out.println(newArr);// 执⾏结果 [1, 2, 3, 4, 5, 6]
4.数组拷⻉
import java.util.Arrays;public static void func(){//全拷贝(引用同一个数组)//改一个都会变int[] arr = {1,2,3,4,5,6};int[] newArr = arr;newArr[0] = 10;System.out.println("newArr: " + Arrays.toString(arr));//全拷贝(引用不同数组)//用Arrays中copyOf在拷贝的同时建一个新的数组//改一个另一个不变arr[0] = 1;newArr = Arrays.copyOf(arr, arr.length);System.out.println("newArr: " + Arrays.toString(newArr));//拷贝某个范围 [ , )int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);System.out.println("newArr2: " + Arrays.toString(newArr2));}
5.二维数组
数据类型[][] 数组名称 = new 数据类型 [⾏数][列数]{ 初始化数据 };
#注:
(1)在JAVA中,⾏不可以省略,列可以省略
(2)二维数组必须用{}区分行,编译器没有办法自己判断划分!!!
int[][] arr = {{1, 2, 3, 4},{5, 6, 7, 8}, {9, 10, 11, 12} };
6.不规则的二维数组
不规则的⼆维数组指的是,⼆维数组的列在定义的时候,没有确定。
int[][] array = new int[2][];array[0] = new int[3];array[1] = new int[5];
上述⼆维数组就不是⼀个规则的⼆维数组。第1⾏有3列,第2⾏有5列。