(二)Java基础知识

目录

1.隐式(自动)转换和强制转换

2.数组的静态/动态初始化

3.Java的内存分配

4.方法重载

5.方法的值传递

1.隐式(自动)转换和强制转换

如果把一个取值范围小的数值赋值给取值范围更大的变量,就会把前者自动转换为取值范围更大的类型;如下所示,把int类型的a赋值给b的时候就会把a自动转换为double类型。

int a = 10;
double b = a;

但是,如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换,如下所示。

double a = 10.0;
int b = (int)a;

很简单的理解,把数据类型比作水盆,把更少的水倒进更大的水盆当然不会有错误,但是把更多的水倒入更小的水盆就需要人为介入了(强制转换)。

2.数组的静态/动态初始化

int[] arr ={1,2,3...};  //静态初始化
int[] arr = new int[n]; //动态初始化
在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值

整数类型:0   

小数类型:0.0 

字符类型:‘/u0000’,即空格

布尔类型:false

引用数据类型:null

3.Java的内存分配

Java内存分配五大区:

:方法运行时使用的内存,比如main方法运行,进入方法栈中执行

:存储对象或者数组,new来创建的,都存储在堆内存

方法区:存储可以运行的class文件

本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关

寄存器:给CPU使用,和我们开发无关

4.方法重载

public class MethodDemo{
    public static void main(String[] args) {
        public static void fn(int a){}
        public static int fn(int a){}
    }
}

上面两个方法不构成重载,因为重载只看形参,不看返回值,从使用上来讲,调用方法的时候只需要方法名和形参就够了,所以这二者才能区分,比如下面就构成重载关系。

public class MethodDemo{
    public static void main(String[] args) {
        public static void fn(int a){}
        public static int fn(int a, int b){}
    }
}

另外构成重载的两个方法需要在一个类里面

public class MethodDemo1{
    public static void fn(int a){}
    public static int fn(double a){}
}
//不构成重载
public class MethodDemo1{
    public static void fn(int a){}
}
public class MethodDemo2{
    public static int fn(double a){}
}
//构成重载

5.方法的值传递

下面我们来看一个例子,

public class Demo{
    public static void main(String[] args) {
        int number = 10;
        change(number);
        System.out.println(number);
    }
    public static void change(int number){
        number = 100;
    }
}
//number的输出值仍然为10

我们从内存的角度分析,main进栈,change进栈,main出栈,main里面的number一直是不变的

想要达到交换的效果应该找一个中间变量来接收交换后的值。

public class Demo{
    public static void main(String[] args) {
        int number = 10;
        int num = change(number);
        System.out.println(number);
    }
    public static int change(int number){
        number = 100;
        return number;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值