一、数据类型
Java中的数据类型分为两大类,基本数据类型和引用数据类型。
1、基本数据类型
基本数据类型只有8种,可按照如下分类
- 整数类型:
long,int,short,byte
- 浮点类型:
float,double
- 字符类型:
char
- 布尔类型:
boolean
2、引用数据类型
引用数据类型非常多,大致包括:
类、接口类型、数组类型、枚举类型、注解类型、字符串类型
例如,String
类型就是引用类型。
简单来说,所有的非基本数据类型都是引用数据类型。
二、基本数据类型和引用数据类型的区别
1、存储位置
基本变量类型
- 在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的
引用变量类型 - 只要是引用数据类型变量,其具体内容都是存放在堆中,而栈中存放的是其具体内容所在内存的地址
//基本数据类型作为方法参数被调用
public class Main{
public static void main(String[] args){
//基本数据类型
int i = 1;
double d = 1.2;
//引用数据类型
String str = "Hello World!";
}
}
2、传递方式
基本变量类型
- 在方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的
引用变量类型 - 引用数据类型变量,调用方法时作为参数是按引用传递的
//引用数据类型作为方法参数被调用
class Book{
String name;
double price;
public Book(String name, double price){
this.name = name;
this.price = price;
}
public void getInfo(){
System.out.println("图书名称:"+ name + " ,价格:" + price);
}
public void setPrice(double price){
this.price = price;
}
}
public class Main{
Book book = new Book("Java开发指南", 60.6);
book.getInfo(); //图书名称: Java开发指南, 价格: 60.6
fun(book)
book.getInfo(); //图书名称: Java开发指南, 价格: 99.9
}
public static void fun(Book temp){
temp.setPrice(99.9);
}
调用时为temp在栈中开辟空间,并指向book的具体内容,方法执行完毕后temp在栈中的内存被释放掉
参考的原文在这里,谢谢大家。