JAVA学习day4

java寒假复习day4

6.1数组接day3

数组赋值机制
基本数据类型赋值,这个值就是具体的数据,而且相互不影响
int n1=5; int n2=n1;
在这里其实是将5赋给了n2
n2的改变不会影响n1的值
数组在默认情况下是引用传递赋的值是地址
int [] arr1 ={1,2,3};
int [] arr2 =arr1;
arr2的改变会影响arr1的值
在这里插入图片描述

6.2数组拷贝(内容复制)

public class shuzucopy {
    public static void main(String[] args) {
        int shuzu[]={4,-1,9,10,23};
        int shuzu1[] = new int[shuzu.length];
        for (int i =0 ;i<shuzu.length;i++){
            shuzu1[i]=shuzu[i];
        }

        shuzu[0]=89;
        System.out.print("数组的值为:");
        for (int i =0 ;i<shuzu.length;i++){
            System.out.print(shuzu[i]+" ");

        }

        System.out.print("\n数组1的值为:");
        for (int i =0 ;i<shuzu.length;i++){
            System.out.print(shuzu1[i]+" ");

        }
    }
}

! 运行结果图

6.3数组添加


```java
public class shuzuadd {
    public static void main(String[] args) {
        int shuzu[]={4,-1,9,10,23};
        System.out.print("未添加元素的数组为:");
        for (int i =0 ;i<shuzu.length;i++){
            System.out.print(shuzu[i]+" ");

        }//将为添加的元素输出
        int shuzuNew[] =new int [shuzu.length + 1];
        for (int i =0 ;i<shuzu.length;i++){
            shuzuNew[i]=shuzu[i];
        }//设置一个新的数组并将其赋值
        shuzuNew[shuzuNew.length -1]=89;
        shuzu = shuzuNew;//将新的数组的地址赋给原来的数组地址
        System.out.print("\n添加元素的数组为:");
        for (int i =0 ;i<shuzu.length;i++){
            System.out.print(shuzu[i]+" ");
     }
 }

! 运行结果图

询问用户的是否要继续添加元素

public class shuzuadd {
    public static void main(String[] args) {
          Scanner  myScanner = new Scanner(System.in);
          int shuzu[]={4,-1,9,10,23};
          do{
              int shuzuNew[] =new int [shuzu.length + 1];
              for (int i =0 ;i<shuzu.length;i++){
                 shuzuNew[i]=shuzu[i];
               }//设置一个新的数组并将其赋值
               System.out.print("请输入你要添加的元素:");
               int addnum = myScanner.nextInt();//接收一个数据
               shuzuNew[shuzuNew.length -1]=addnum;
               shuzu = shuzuNew;
               //将新的数组的地址赋给原来的数组地址
               System.out.print("添加元素的数组为:");
               for (int i =0 ;i<shuzu.length;i++){
                  System.out.print(shuzu[i]+" ");
               }
               System.out.print("\n是否要继续添加?(y/n)");//询问用户是否继续
               char ks =myScanner.next().charAt(0);//接收一个字符
               if(ks == 'n'){
                   break;
               }
          } while(true);
     }
  }
  这里空间不能动态增长,空间复杂度大,需要新声明一个数组

! 运行结果图

6.4冒泡排序

public class Bubblesort{
    public static void main(String[] args) {
            int arr[]={23,65,45,1,73,89,34,62};

            for (int i=0;i<arr.length-1;i++) {
                for (int j = 0; j < arr.length - 1; j++) {
                    if (arr[j] > arr[j + 1]) {
                        int temp;
                        temp = arr[j + 1];
                        arr[j + 1] = arr[j];
                        arr[j] = temp;

                    }
                }
                System.out.print("\n第"+(i+1)+"一趟的结果为:");
                for (int s =0 ;s<arr.length;s++){
                    System.out.print(arr[s]+" ");
                }

            }
            System.out.print("\n冒泡排序后的结果为:");
            for (int d =0 ;d<arr.length;d++){
                System.out.print(arr[d]+" ");
              }
         }
     }

! 运行结果图

6.5二维数组

public class twoarry{
    public static void main(String[] args) {
         int [][] arr = {{0,0,0,0,0,0},
                         {0,0,1,0,0,0},
                         {0,2,0,3,0,0},
                         {0,0,0,0,0,0}};
         for (int i = 0;i<arr.length;i++) {
             for (int j = 0; j < arr[i].length; j++) {
                 //arr[i]表示二维数组的第i+1个元素
                 //arr[i].length得到对应的每一个数组的长度
                 System.out.print(arr[i][j]+"\t");

             }
             System.out.println();
         }
     }
}

! 运行结果图

6.6二维数组细节

二维数组的每一个元素是一维数组,所以如果要得到每一个一维数组的值还需要再次遍历

6.7二维数组的使用

方法一:动态初始化
例:int a [ ] [ ] = new int [2][3]

public class twoarry{
    public static void main(String[] args) {

        int a [ ] [ ] = new int [2][3];
        for (int i=0;i<a.length;i++){
            for (int j=0;j<a[i].length;j++){
                System.out.print(a[i][j]+"");
            }
            //a[i]表示二维数组的第i+1个元素
            //a[i].length得到对应的每一个数组的长度
            System.out.println();
        }
     }
}

! 运行结果图
在这里插入图片描述
方法二:动态初始化
先声明 ,再开辟空间
例:

int arr [][];//先声明
arr = new int [4] [3];//再开辟空间

方法三:动态初始化-列数不确定
有一个三维数组,但是每一个数组的元素个数是不一样的

public class twoarry{
    public static void main(String[] args) {

        int a [ ] [ ] = new int [5][];//创建了二维数组
        for (int i=0;i<a.length;i++){
            //给每一个一维数组开辟空间
            //如果没有给一维数组new,那么arr[i]就是null
            a[i] = new int [i+1];
            for (int j = 0;j<a[i].length;j++)
            {
                a[i][j] = i+1;
            }
        }
        //输出每一个一维数组
        for (int i = 0;i<a.length;i++) {
             for (int j = 0; j < a[i].length; j++) {
                 //arr[i]表示二维数组的第i+1个元素
                 //arr[i].length得到对应的每一个数组的长度
                 System.out.print(a[i][j]+"\t");
             }
             System.out.println();
         }
     }
}

! 运行结果图

! 关于申请空间的解析图片
关于申请空间的解析图片
方法四:静态初始化
int arr [][]= {{1,3,4,}{4,67,94,26}}

7面向对象编程

7.1类与对象

类是一种数据类类型
例如:猫类是一个自定义数据类型,
对象就是一个具体的实例
例如:大学是一个类,清华大学和北京大学都是对象
把类的特征提取出来

class Cat{
    String name;
    int age;
    String color;
}//定义一个猫类
public class twoarry{
    public static void main(String[] args) {
        Cat cat1 = new Cat();//实例化一个猫
        cat1.name ="小白";
        cat1.age = 12;
        cat1.color  = "白色";
        //对实例化的猫进行赋值它的属性
        Cat cat2 = new Cat();//实例化一个猫
        cat2.name ="小黑";
        cat2.age = 4;
        cat2.color  = "黑色";
        //对实例化的猫进行赋值它的属性
        System.out.println("第一只猫的信息:"+cat1.name +" "+
                cat1.age + " " + cat1.color );//输出第一只猫的信息
        System.out.println("第一只猫的信息:"+cat2.name +" "+
                cat2.age + " " + cat2.color );//输出第二只猫的信息
       }
 }

对象在内存中存在的形式
如果是基本数据类型则在堆中,如果是字符串类型(引用类型)则会放在方法区的常量池

在这里插入图片描述

成员变量/属性
成员变量=属性
属性是类的一个组成部分,一般是基本数据类型,也可以是引用类型(数组)

注意事项和使用细节
属性的定义语法同变量
属性的定义类型可以为任意类型,包含基本类型或引用类型
属性如果不赋值有默认值规则和数组一致
int 0;short 0;byte 0;long 0;float 0.0; double 0.0 ;char \u0000;boolean false;String null

如何创建对象
方法一:先声明再创建

 Cat cat;
 cat =new Cat();

方法二:直接创建

Cat cat = new Cat();

如何访问属性
对象名.属性名

类和对象的内存分配机制
在这里插入图片描述
栈:一般存放基本数据类型
堆:存放对象
方法区:常量池,类加载信息

JAVA创建对象的流程简单分析
Person p = new Person();
p.name =“jack”;
p.age = 10;
1、先加载类的信息(只会加载一次)
2、再堆中分配空间,进行默认初始化,把地址赋给p,p就指向对象
3.进行指定初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值