必须使用分号(;)结束一条语句,换行不行。
语句,就像一句话一样,是一条完整的对计算机的指示。比如:3 + 2;就不完整,3+2=5,但等于5之后呢?是赋值给一个变量,还是把它控制台输出来?得给句话啊!所以,这才是语句:
int sum = 3 + 2;
条件表达式if后面的结果,只能是bool值,其他类型都不行:
if (1) /*有点编程语言可以使用1和0表示true和false,Java和C#不行*/ if (name = "yezi") /*常见错误,混淆了=和==*/
复习:强类型的一维数组
多维(multiple dimension),可以是二维、三维、四维……,但我们开发中常用的是二维,偶尔有三维,几乎不会上四维。
形象的描述:
多维,其实又可以分两种(以二维为例):
我们先看在Java/C#中都通用的
3行不定列的数组
int[][] mutrix = new int[3][];使用数组赋值
mutrix[0] = new int[] { 1, 2 }; mutrix[1] = new int[] { 3, 4, 5 } ; mutrix[2] = new int[4];
取值方式如下:
//取出“作为行的”数组 int[] arr1 = mutrix[1]; //取出“行中的列”元素 System.out.println(mutrix[1][0]);
也可以为行,或单个元素赋值
mutrix[1] = new int[10]; mutrix[1][0] = 100;但注意:不能在该(行)数组实例化之前就赋值。
因为它的底层逻辑是:数组的数组。作为元素的数组必须是实例化之后才能使用。(能懂我的意思么?o(╥﹏╥)o)
二维数组,如果要遍历每一个“基本”元素,就需要
for (int i = 0; i < mutrix.length; i++) { int[] array = mutrix[i]; for (int j = 0; j < array.length; j++) { System.out.print(array[j] + " "); } System.out.println(); }
PS:固定“列宽”的数组Java和C#使用了不同的语法……
比如我们要在程序中记录“星期几”,用什么类型比较好?整数int吗,或者字符串string?
假设我们有一个方法,可以根据星期几返回bool值,如果是星期三和星期六,就返回true,表示当天不上课,^_^
怎么声明这个方法呢?
static bool IsRest(int dayofWork) { return dayofWork == 3 || dayofWork == 6; }
这样写,有两个问题:
@想一想@:如果用string类型呢?
PS:int和string的选择,QQ号、电话号码、只能是阿拉伯数字的密码,用什么类型?
在Java和C#中都提供了一个DayOfWork的枚举:(演示:F3转到定义)
public enum DayOfWeek { MONDAY, TUESDAY,
DayOfWeek是枚举名,类似于int、String,代表一种类型。
MONDAY、TUESDAY就是枚举的值,直接枚举名点(.)出即可:
DayOfWeek day = DayOfWeek.FRIDAY;
这样,我们就可以:
static bool IsRest(DayOfWeek dayofWork) { return dayofWork == DayOfWeek.Wednesday || dayofWork == DayOfWeek.Saturday; }
@想一想@:使用枚举的好处
这些,都极大的提高了代码的可读性和健壮性(少bug)。
我们还可以定义枚举,可以把枚举当做一种内置类型。
enum Score{ //枚举名 excellent, //枚举值 passed, failed }
枚举通常和 switch...case 配合使用:
static void reward(Grade grade) { switch (grade) { case Excellent: //和C#不同,没有Grade.前缀
演示:F3转到定义System.out.println()
(同一个类中)同一个方法名,可以使用配以不同的参数“组合”(个数/类型/次序);调用的时候,编译器根据传入的参数,自动的找到相应的方法:这就是方法的重载。
但注意:
不能认为是方法的重载。
static void grow(){} //static int grow(){return -1;} //不能通过返回类型区分 static void grow(int age){} static void grow(string name){} //static void grow(string sname) { } //不能通过参数名区分 static void grow(string name, int age){} static void grow(int age, string name){}
@想一想@:为什么需要方法的重载?
static void exam(int bonus) { System.out.println(90 + bonus); } static void exam() { exam(5); }
生活场景:“老程,帮我买瓶水”
开发中的例子:生成一个随机数组,默认:10个元素,以0开头,元素值最大间距5以内。
说明:J&C中的所有作业,都可以/应该在完成相应的Java/C#部分后完成。
多快好省!前端后端,线上线下,名师精讲
更多了解 加: