java基础

本文详细介绍了Java内存的栈内存和堆内存,以及数组的初始化、操作和常见问题。栈内存用于存储局部变量,而堆内存用于存储new出来的对象。数组初始化包括静态和动态方式,并展示了遍历、查找最大值等操作。此外,文章还讲解了方法的定义与调用,以及==和===、equals的区别。在实际编程中,注意避免数组的索引越界和空指针异常。
摘要由CSDN通过智能技术生成

1,内存

栈内存:局部变量,定义在方法中得变量。例子:arr使用完毕后立即消失。

堆内存:存储new出来得内容(对象或者实体)数组在初始化时,会为存储空间添加默认值。

如 整数:0 浮点数:0.0 布尔类型:false 字符:空字符 应用数据类型:null

每一个new出来的东西都会有一个地址值舒勇完毕会在垃圾回收容器空闲时被回收。

int[]arr 001 栈内存

new int[3[

001 堆内存

静态初始化

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度

格式为   数据类型[]       变量名 =new 数据类型[]{数据1,数据2,数据3,......};

范例         int[]                arr      = new int[]{1,2,3,4,.....};

简化格式 数据类型[] 变量名 ={数据1,数据2,数据3,......};

范例             int[]        arr = {1,2,3,...};

数组操作常见问题

1,索引越界:访问了数组中不存在的索引对应的元素造成索引越界问题。

2,空指针异常:访问的数组已经不指向堆内存的数据,造成空指针异常。

3,null:空值,引用数据类型的默认值,表示不指向任何有效对象。

代码

public class demo01 {
    public static void main(String[] args) {
        int[] arr = new int [3];
//        越界 现在数组为 0,1,2 无法打印出arr3 错误代码ArrayIndexOutOfBoundsException
//        System.out.println(arr[3]);
//        System.out.println(arr[2]);
//        空指针异常   错误代码NullPointerException
        arr = null;
        System.out.println(arr[0]);
    }
}

常见操作

遍历

1,正常遍历

public class demo02 {
    public static void main(String[] args) {
//        静态数组
        int[] a ={11,2,33,44,55};
        for (int b=0;b<5;b++){
            System.out.println(a[b]);
        }
    }
}

2,多数据遍历 

public class demo02 {
    public static void main(String[] args) {
//        静态数组
        int[] a ={11,2,33,44,55};
        for (int b=0;b<a.length;b++){
            System.out.println(a[b]);
        }
    }
}

最值

public class demo03 {
    public static void main(String[] args) {
         int[]arr = {12,34,56,78,12};
         int max = arr[0];
         for (int x = 1;x<arr.length;x++){
             if(arr[x]<max) {
                 max = arr[x];
             }
         }
        System.out.println(max);
    }
}

方法

1,方法定义

格式 :public static 方法名(){方法体}

范例:public static inEc(){方法体}

2,方法调用

格式:方法名():

范例:inEc();

注意想定义后调用。

带参数方法定义

格式         public static void 方法名(参数){}

格式 单个   public static void 方法名(数据类型 变量名){}

范例 单个  public static void 方法名(int number){}

格式 多个  public static void 方法名(数据类型 变量名1 数据类型 变量名2){}

范例 多个  public static void 方法名(int a1, int a2){}

调用

格式 方法名(参数);

格式 方法名(变量名/常量值);

范例 getMax(6);

格式 方法名(变量名1/常量值1,变量名2/常量值2);

范例 getMax(5,6);

形参和实参

形参:方法定义的参数,等同于变量定义格式,例如:int numver

实参:方法调用中的参数,不带数据类型,等同于变量或者常量,例如:10 number

参数练习

public class demo07 {
    public static void main(String[] args) {
//        常量
        getMax(1,2);
//        变量
        int a=4;
        int b=3;
        getMax(a,b);
    }
    public static void getMax(int a,int b){
        if (a>b){
            System.out.println(a);
        }else {
            System.out.println(b);
        }
    }
}

带返回值方法定义

格式 public static 数据类型 方法名(参数){return 数据;}

范例 public static boolean 方法名(int number){return true;}

范例 public static int 方法名(int a,int b){return 100;}

带返回值方法调用

格式1 方法名(参数);

范例 isE(5);  ps演示的是常量也可以是变量

格式2 数据类型 变量名 =方法名(参数);

范例 boole flag = isE(5);

方法注意事项

方法不能嵌套。

void表示五返回值,可以省略return,后面不加数据。

 

 2,==和===区别

1、===:称为等同符,当两边值的类型相同时,直接比较值,若类型不相同,直接返回false;

2、==:称为等值符,当等号两边的类型相同时,直接比较值是否相等,若不相同,则先转化为类型相同的值,再进行比较;

类型转换规则:

1)如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。

2)如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等。

3,==和equals区别

在string的object里equals是一样的。equals基于==实现。

==

当比较基本数据类型或者对象时。

equals


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值