Day04:
静态数组是一组对象,每个元素都是一个对象,所以用 new 创建新的数组实例。
class test{
public static void main(String[]args){
a[] a1 = new a[3];
a[] a2 = new b[3];//子类对象放进父类数组
// b[] b1 = new a[3];父类对象放进子类数组,就算强制转换也不可以
b[] b2 = new b[3];
System.out.println(a1+" "+a2+" "+b2);//因为没有给数组中元素对象赋值,所以打印出的是数组在内存中的地址值
}
}
class a{
}
class b extends a{
}
对象数组被创建的时候,数组中的每个对象的引用都是 null ,所以在使用前必须将对象赋值给每个数组元素。
打印数组内容的方式:
import java.util.*; //导入 util 包
class test{
public static void main(String[]args){
int a[] ={1,2};
System.out.println(Arrays.toString(a)); //调用
}
}
检查数组长度方式:
class test{
public static void main(String[]args){
int a[] ={1,2};
System.out.println(a.length); //数组名.(点)length
}
}
多维数组:
二维数组定义
int[][] = new int[2][3];
i = new int[][]{{2,3,4,},{5,6,7}};
int[][] a = new int[][]{{2,3,4},{1,5,6}};
三维数组
int[][][] = new int[2][3][4];
i = new int[][]{{2,3,4,},{5,6,7},{1,8,9}};
int[][][]a = new int[][][]{{1,2,3,},{4,5,6,},{7,8,9}};
四维数组,五维数组........以此类推
6种关系运算符
== 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
逻辑运算符
&& 短路与(相当于 AND)
|| 短路或(相当于 OR)
! 逻辑非(相当于 NOT)
& 逻辑与
| 逻辑或
^ 逻辑异或
a && b (a & b) (若a、b 都为真,则 a && b (a & b) 为真)
a || b (a | b) (若 a、b 之一为真,则 a || b (a | b) 为真)
!a (若 a 为真,则 !a为假)
a ^ b (若a,b 是一真一假则为真,都为假或者都为真则为假)
真假返回值, 1 为真, 0 为假
if语句的三种形式:
1:
if(条件){
语句;
}
2:
if (条件) {
语句;
}
else {
语句;
}
3:
if(条件){
语句;
}
else if(条件){
语句;
}
.
.
.
.
else if(条件){
语句;
}
else{
语句;
}
条件运算符:
max = (a>b)? a:b;
max = a>b ? a:b
当 a>b 为真则取值 a ,否则取值 b ;
max = a>b?a:b+1 相当于 max = a>b?a:(b+1);
条件运算符方向“自右向左”:
a>b?a:c>d?c:d
相当于
a>b?a:(c>d?c:d)
switch 语句:
switch(条件)
{
case 常量表达式1: 语句 1;
case 常量表达式2: 语句 2;
case 常量表达式3: 语句3;
.
.
.
.
case 常量表达式n: 语句n;
default : 语句n+1;
}
当没有条件符合 case 常量表达式 就执行 default 语句;
case 不具有判断功能,即使条件找到相对应的 case 还是会继续执行下面的 case ;为了让条件找到相对应的 case 后停止,要在后面加上 break 跳出switch语句
最后的 default 可以不写 break
&& 表示逻辑“并且”
|| 表示逻辑“或”
! 表示“非”
while循环语句:
while(条件){
语句;
}
do-while循环语句:
do
{
循环体;
}
while(条件);
命令行 md 文件名 是创建文件夹
for循环语句:
for(条件1;条件2;条件3)
{
语句;
}
最简单的 for 语言形式:
for(循环变量赋初值;循环条件;循环变量增值)
{
语句;
}
终止语句 break : 终止循环。
跳出语句 continue : 跳出本次循环。
标号(标签):
与 break,continue 一起使用。
例如:
<pre name="code" class="java">class test {
public static void main(String []args) {
lable: //标签名称
for(int i=0; i<9; i++) {
for(int j=0; j<8; j++) {
for(int k=0; k<7; k++) {
System.out.println(k + "\n ");
if(k == 4) break lable; // 满足条件后跳转到标签
}
System.out.println("After k loop"); // 不会被执行
}
System.out.println("After j loop"); // 不会被执行
}
System.out.println("After i loop");
}
}
标签的作用就是等到满足条件后直接跳转到标签位置,跳出多重循环,然后执行下面的语句。
递归调用:
class test {
public static void main(String[]args) {
System.out.println(method(6));
}
static int method(int i) {
if(i==1) {
return 1;
}else {
return i * method(i-1);
}
}
}
递归调用 打印 Fibonacci 数列:
class test {
public static void main(String[]args) {
System.out.println(method(9));
}
static int method(int i) {
if(i==1 || i==2){
return 1;
}
int a1 = 1;
int a2 = 1;
int a = 0;
for(int t=0;t<i-2;t++ ) {
a = a1+a2;
a1 = a2;
a2 = a;
}
return a;
}
}