JAVA基础知识(四)

一.idea的快捷键

自动补全:Ctrl+shift+enter
根据上下文补全:ctrl+shift+space
更改名子:shift+f6
提取变量:ctrl+alt+v
快捷生成方法:alt+insert
抽取一部分形成新的方法:ctrl+alt+m
快速复制方法:ctrl+d
按照层次选择代码:ctrl+w
按照层次取消选择代码:ctrl+shift+w
移动到单词的前面或者后面:ctrl+方向键
光标移动到代码块的前面或者后面:ctrl+【】
上下方法跳跃:alt+上下键
进行代码的折叠:ctrl+<>
快速查找:ctrl+n
文件名称:ctrl+shift+n
任意地方查找:shift+shift
查看当前类的继承关系:ctrl+h
页面关键词查找:ctrl+f(f3上下内容切换)
ctrl +alt+space内容提示
ctrl+alt+L 格式化代码
ctrl+/单行注释
strl+shift+/ 选中代码注释,多行注释,再按取消
alt+enter导抱和自动修正

二.数组

1.数组定义

用来存储多个相同类型的数据的容器。

2.基本格式

格式一: 数据类型[] 变量名;
示列: int[] arr;
格式二: 数据类型 变量名[];
示列: int arr[];
一般使用第一种格式

3.数组的初始化

3.1 栈
在方法中定义的变量,局部变量,方法执行要进栈,程序结束,栈中的方法就消失了。
3.2 堆
凡是new出来的都在堆中,堆中的数据,会被垃圾回收器自动回收。
3.3 数组初始化默认值
整型 :0
浮点型 :0.0
字符型 :空字符
布尔型: false
引用类型:null
3.4 初始化定义
为数组中的元素分配空间然后赋值
3.5动态初始化方式
特点:指定长度
基本格式:数据类型[] 变量名=new 数据类型[数组长度];
示列:int[] arr=new int[10];
3.6静态初始化方式
特点:指定内容
基本格式:数据类型[] 变量名=new 数据类型[] {数据1,数据2,数据3};
示列:int[] b=new new int[] {1,2,3};
3.7静态初始化简化格式
基本格式:数据类型[] 变量名=数据1,数据2,数据3};
示列:int[] b={1,2,3};

4.元素的访问格式

定义:数组位置的编号
基本格式:数组名[索引]
注意:
数组的索引是从0开始的,连续的,逐1递增的。

5.初始化数组,并输出数组中的元素

5.1代码示列

public static void main(String[] args) {
    //动态初始化格式
    int[] a=new int[3];
    //输出数组中的元素
    System.out.println(a[0]);//赋值前全部默认的为0
    //输出数组名
    System.out.println(a);//[I@50cbc42f 地址
    //数组赋值
    a[0]=100;
    a[1]=200;
    System.out.println(a[0]);
    System.out.println(a[1]);
    System.out.println(a[2]);
    System.out.println("--------------------------------");
    //静态初始化
    //静态初始化不能指定长度
    int[] b=new int[]{12,23,45};
    //静态初始化简化方式
    int[] c={1,2,3};
    System.out.println(c);
    System.out.println(c[0]);
    System.out.println(c[1]);
    System.out.println(c[2]);

    //访问了数组中不存在的索引对应的元素,就会有越界异常:java.lang.ArrayIndexOutOfBoundsException
//        System.out.println(c[3]);

    //访问的数组已经不再指向堆内存的数据,会造成空指针异常:java.lang.NullPointerException
    //把null赋值给数组b
//        b=null;
//        System.out.println(b[0]);
}

运行结果

0
[I@1c53fd30
100
200
0
--------------------------------
[I@50cbc42f
1
2
3
6.两个数组指向同一地址空间问题

6.1代码示列

public static void main(String[] args) {
    int[] a=new int[3];
    a[0]=100;
    a[1]=200;
    a[2]=300;
    System.out.println(a);
    System.out.println(a[0]);
    System.out.println(a[1]);
    System.out.println(a[2]);
    //定义第二个数组指向对一个数组,把都一个数组的地址赋值给第二个数组
    int[] b=a;
    System.out.println(b[0]);
    b[0]=110;
    b[1]=210;
    b[2]=310;
    //两个数组地址相同,只new了一次,只开辟了一块地址空间
    System.out.println(a);
    System.out.println(b);
    //只要一个数组更改了数组元素的值,则两个数组的元素值都会改变
    System.out.println(a[0]);
    System.out.println(b[0]);

}

运行结果

[I@50cbc42f
100
200
300
100
[I@50cbc42f
[I@50cbc42f
110
110
7.数组遍历

数组.length可以获取数组元素数量
7.1代码示列
案例一:遍历数组

public static void main(String[] args) {
    int[] arr={12,23,34,45,56,67,78,89};
    for (int i=0;i<arr.length;i++){
        System.out.print(arr[i]+" ");
    }
}

运行结果

12 23 34 45 56 67 78 89 

案例二:输出班级不及格人数,平均分,总分数

public static void main(String[] args) {
    int[] score={80,90,50,85,90,78,88,89,93,98,75,59};
    int count=0;
    int sum=0;
    int av=0;
    for (int i=0;i<score.length;i++){
        if (score[i]<60){
            count++;
        }
        sum=sum+score[i];
    }
    av=sum/score.length;
    System.out.println("不及格人数:"+count);
    System.out.println("总分数:"+sum);
    System.out.println("平均分数:"+av);
}

运行结果

不及格人数:2
总分数:975
平均分数:81

案例三:求数组的最大值

public static void main(String[] args) {
    int[] arr={12,45,78,64,8};
    int max=arr[0];
    for (int i=0;i<arr.length;i++){
        if (arr[i]>max){
            max=arr[i];
        }
    }
    System.out.println(max);
}

运行结果

78

案例四:冒泡排序

public static void printArr(int[] arr){
    for (int f=0;f<arr.length;f++){
        System.out.print(arr[f]+" ");
    }
    System.out.println();
}
public static void main(String[] args) {
    int[] score={80,90,50,85,90,78,88,89,93,98,75,59};
    System.out.print("原始数组:");
    printArr(score);
    for (int i=0;i<score.length-1;i++){
        for (int j=0;j<score.length-i-1;j++){
            if (score[j]>score[j+1]){
              int temp=score[j];
                score[j]=score[j+1];
                score[j+1]=temp;
            }
        }
        System.out.print("第"+(i+1)+"次排序后的结果:");
        printArr(score);
    }
}

运行结果

原始数组:80 90 50 85 90 78 88 89 93 98 75 59 
第1次排序后的结果:80 50 85 90 78 88 89 90 93 75 59 98 
第2次排序后的结果:50 80 85 78 88 89 90 90 75 59 93 98 
第3次排序后的结果:50 80 78 85 88 89 90 75 59 90 93 98 
第4次排序后的结果:50 78 80 85 88 89 75 59 90 90 93 98 
第5次排序后的结果:50 78 80 85 88 75 59 89 90 90 93 98 
第6次排序后的结果:50 78 80 85 75 59 88 89 90 90 93 98 
第7次排序后的结果:50 78 80 75 59 85 88 89 90 90 93 98 
第8次排序后的结果:50 78 75 59 80 85 88 89 90 90 93 98 
第9次排序后的结果:50 75 59 78 80 85 88 89 90 90 93 98 
第10次排序后的结果:50 59 75 78 80 85 88 89 90 90 93 98 
第11次排序后的结果:50 59 75 78 80 85 88 89 90 90 93 98 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值