21天学通Java学习笔记-Day04

时间:2023-02-25 19:04:26

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;
}
}