javaSE--基础四(idea,数组)

IDEA的项目结构

project(项目、工程)
    -- Module(模块)
    	-- Package()
    		-- Class()
    		-- Class()
    	-- Package()
    		-- Class()
    		-- Class()
    
    -- Module(模块)
    	...

在使用IDEA来创建Java项目的时候,一定要满足上面的目录结构,否则代码跑不起来。

IDEA创建项目

1.创建项目
	Crete New Project-->在左边选择Empty Project --> Next--> 填写项目名称(BasiceCode)
    -->Finish
2.创建模块
	点击+-->New Module--> Next --> 填写模块的名称(myModule) -->finish --> Applye And Ok
3.在模块中创建包
	选中src目录右键-->New --> Package --> 填写包的名称 (com.itheima.demo)
4.在包中新建类
	选中包文件夹右键-->New --> Class --> 写具体代码
5.编译和运行
	编译:自动编译
	运行:
		1)点击main方法左边的绿色三角按钮
		2)右键-->Run

关闭已有项目

File --> Close Project

在已有的项目中新建模块

点击工具栏右边的按钮,如图所示。新建新的模块

在这里插入图片描述

删除已有的模块

在项目的结构页面,点击 减号 就可以删除模块。但是需要到项目文件夹中,手动删除才能彻底删除模块。

在这里插入图片描述

IDEA的快捷键

psvm:  一键生成主方法
sout:   生成输出语句
ctrl+alt+L:	格式化代码
alt+Enter:	代码修正提示

ctrl+/:	添加(取消)单行注释
ctrl+shift+/ : 添加(取消)多行注释

ctrl+D :  复制当前行的代码
ctrl+X :  剪切
ctrl+V :  粘贴

alt+1:	打开/隐藏项目结构
alt+4:	打开/隐藏控制台

10.fori :  10次的for循环 

数组的初始化

数组是一个容器,用来存储多个类型相同的数据。数组中存储的每一个数据叫做元素

//定义数组格式- 动态初始化
数据类型[]  数组名=new 数据类型[长度];
int[]  arrayA=new int[3]; //定义一个长度为3的数组,元素类型为int
byte[] arrayB=new byte[2]; //定义一个长度为2的数组,元素类型为byte

//定义数组格式- 静态初始化
数据类型[]  数组名=new 数据类型[]{元素1,元素2,元素3....};
int[]  arrayA=new int[]{1,2,3,4,5}; //定义一个长度为5的数组,元素分别是1,2,3,4,5
char[] arrayB=new char[]{'a','b','c'} //定义一个长度为3的数组,元素分别是'a','b','c'

//定义数组格式- 静态初始化简化写法
int[]  arrayA={1,2,3,4,5}; //定义一个长度为5的数组,元素分别是1,2,3,4,5
char[] arrayB={'a','b','c'}; //定义一个长度为3的数组,元素分别是'a','b','c' 

注意:下面的写法也是可以的,但是不推荐

//定义数组格式- 动态初始化
数据类型  数组名[]=new 数据类型[长度];
int  arrayA[]=new int[3]; //定义一个长度为3的数组,元素类型为int
byte arrayB[]=new byte[2]; //定义一个长度为2的数组,元素类型为byte

数组元素的访问

数组为每一个元素分配了一个编号,我们把这个编号叫做索引,从0开始依次递增。通过 数组名[索引] 就可以访问元素。

public class ArrayDemo1{
    public static void main(String[] args){
        //定义一个长度为3的数组,元素是int类型
        int[] array=new int[3];
        System.out.println(array); //地址值
        
        System.out.println(array[0]); //0
        System.out.println(array[1]); //0
        System.out.println(array[2]); //0
        
        //给数组的元素赋值
        array[0]=10;
        array[1]=20;
        
        System.out.println(array[0]); //10
        System.out.println(array[1]); //20
        System.out.println(array[2]); //0
    }
}

Java的内存分配

栈内存:存储局部变量(方法中的变量)
堆内存:new出来的数据 
方法区:存储字节码的信息
	HelloWorld.java (源码,给人看的)
	HelloWorld.class (字节码文件,给JVM执行)

本地方法区:操作系统维护的内存区域
寄存器:给CPU使用的

一个数组的内存图解

在这里插入图片描述

两个数组的内存图解

每一个数组在堆内存中都有自己独立的空间,互不影响。

在这里插入图片描述

两个引用指向同一个数组

当两个引用指向同一个堆内存的地址,一个引用修改了堆内存中的数据,第二个引用去访问时数据已经被修改过了。

在这里插入图片描述

数组的常见问题

1.ArrayIndexOutOfBoundsException:  数组索引越界
	数组的最小索引是0,最大的索引是长度-1

2.NullPointerException: 空指针异常
	数组的变量,没有指向任何地址 

数组练习题

遍历数组的元素

public class ArrayTest1 {
    public static void main(String[] args) {
        int a=10;
        
        int[] arrayA={10,20,30,40,50,90,4,5,3,5,6,8,8}; //地址

        //遍历数组快捷键:数组名.fori    
        //数组的长度:array.length
        for (int i = 0; i <arrayA.length; i++) {
            System.out.println(arrayA[i]);
        } 
    }
}

求数组中元素的和

求和问题的思路
	1.定义求和变量sum
	2.遍历所有需要求和的数据
	3.把数据和sum累加
public class ArrayTest2 {
    public static void main(String[] args) {
        int[] array={10,20,30,40,50};
		
        //求和变量
        int sum=0;
        
        //遍历数组快捷键:数组名.fori    
        //数组的长度:array.length
        for (int i = 0; i <array.length; i++) {
           //让数组的元素和sum累加
           sum+=array[i];
        } 
        System.out.println("所有元素的和为:"+sum);
    }
}

数组求最值

求最值的思路:
	1.假设数组中的0索引元素为最大值max(擂主)
    2.让其他的元素和max比较,把较大的值赋值给max(打赢的站在擂台上)
    3.最终max就是最大值(最后站在擂台上的就是最大值)
public class ArrayTest3 {
    public static void main(String[] args) {
        int[] array={1,3,46,8,2,5,9,7};

        //1.假设数组中的0索引元素为最大值(擂主)
        int max=array[0];

        //2.让其他的元素和max比较,把较大的值赋值给max(打赢的站在擂台上)
        for (int i = 1; i < array.length; i++) {
            if(array[i]>max){
                max=array[i]; //打赢的站在擂台上
            }
        }
        //3.最终max就是最大值(最后站在擂台上的就是最大值)
        System.out.println("最大值为:"+max); 
    }
}

数组元素查找

查找数组中元素第一次出现的索引

数组元素查找的思路
	1.确定需要查找的元素
	2.遍历数组的元素和要查找的元素进行比较
		如果相等,获取索引,break跳出循环
	3.在循环外边定义一个index索引,如果找到了元素index记录索引;否则index等于-1
public class ArrayTest4 {
    public static void main(String[] args) {
        int[] array={10,20,30,40,15,60,15,80};

        //1.确定需要查找的元素
        int key=15; 

        int index=-1; //记录查找的索引,规定-1表示没有找到元素
        //2.遍历数组中的元素和key进行比较
        for (int i = 0; i < array.length; i++) {
            if(array[i]==key){
                index=i;
                break;
            }
        }
        //判断index的值,是否等于-1
        if(index==-1){
            System.out.println("对不起,没有这个元素");
        }else{
            System.out.println(key+"元素在数组中的索引为:"+index); 
        }
    }
}

评委打分问题

在跳水运动中,假设6个评委给选手打分,要求去掉最高分,去掉最低分,求平均分

解题思路:
	1)循环的采用键盘录入的方式,代表评委打分
		使用Scanner录入62)使用数组容器,把键盘录入的数据存起来
	3)求数组元素的最大值
	4)求数组元素的最小值
	5)求数组元素的和
	6)最终得分=(-最大值-最小值)/(长度-2)
public class ArrayTest6 {
    public static void main(String[] args) {
        //定义数组,用于存储评委的分数
        int[] array=new int[6];

        //1)循环的采用键盘录入的方式,代表评委打分
        for (int i = 0; i < array.length; i++) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入第"+(i+1)+"评委的分数:");
            int num = sc.nextInt();
            //2)把分数存入数组中
            array[i]=num;
        } 

        //3)求数组元素的最大值
        //把数组中的0索引元素假设为最大值
        int max=array[0];
        for (int i = 1; i < array.length; i++) {
            //把数组中元素较大的值赋值给max
            if(array[i]>max){
                max=array[i];
            }
        }
        System.out.println("最大值为:"+max);

        //4)求数组元素的最小值
        int min=array[0];
        for (int i = 1; i < array.length; i++) {
            //把数组中元素较小的值赋值给min
            if(array[i]<min){
                min=array[i];
            }
        }
        System.out.println("最小值为:"+min);

        //5)求数组元素的和
        int sum=0;
        for (int i = 0; i < array.length; i++) {
            sum+=array[i];
        }
        System.out.println("所有元素的和为:"+sum);

        //6)求平均值
        double avg=(sum-max-min)*1.0/(array.length-2);
        System.out.println("最终得分:"+avg);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值