Java中的数据类型分为两大类,基本数据类型和引用数据类型。
long int short bytefloat doublecharboolean| 数据类型 | 大小/位 | 可表示数据范围 | 默认值 | 封装器类 | |
|---|---|---|---|---|---|
| 1 | byte | 8 | -128~127 | 0 | Byte |
| 2 | short | 16 | -32768~32767 | 0 | Short |
| 3 | int | 32 | -2147483648~2147483647 | 0 | Integer |
| 4 | long | 64 | -9223372036854775808~9223372036854775807 | 0 | Long |
| 5 | float | 32 | -3.4E38~3.4E38 | 0.0 | Float |
| 6 | double( | 64 | -1.7E308~1.7E308 | 0.0 | Double |
| 7 | char | 16 | 0~255 | ‘\u0000‘ | Character |
| 8 | boolean | 1 | true或false | flase | Boolean |
例如,String类型就是引用类型。
简单来说,所有的非基本数据类型都是引用数据类型。
在方法定义的非全局基本数据类型变量的具体内容是存储在栈中
只要是引用数据类型变量,其具体内容都是放在堆中,而栈中存放的是其具体内容所在内存的地址
public class Main{
public static void main(String[] args){
//基本数据类型
int i=5;
char=i;
//引用数据类型
String str="Hello";
}
}

在方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的
ps:值传递等于复制一份自己给方法,本身的值不会被改变
public class Main{
public static void main(String[] args) {
int a=100;
System.out.println("调用方法前a的值"+a);
fun(a);
System.out.println("调用方法后a的值"+a);
}
?
private static void fun(int temp) {
temp=0;
}
}

引用数据类型变量,调用方法时作为参数是按引用传递的
ps:引用传递等于将自己传递过去了 ,本身的值是会被改变的
public class Main {
public static void main(String[] args) {
?
Book book=new Book();
System.out.println("调用方法前的"+book);
set(book);
System.out.println("调用方法后的"+book);
?
?
set
}
?
private static void set(Book set) {
set.setBookNum(1314);
set.setName("《YOU》");
}
?
}
?
?
?
class Book{
private String name;
private int bookNum;
?
public Book(String name, int bookNum) {
this.name = name;
this.bookNum = bookNum;
}
?
public Book() {
}
?
public String getName() {
return name;
}
?
public void setName(String name) {
this.name = name;
}
?
public int getBookNum() {
return bookNum;
}
?
public void setBookNum(int bookNum) {
this.bookNum = bookNum;
}
?
@Override
public String toString() {
return " 书名:‘" + name + ‘\‘‘ +
", 书号:" + bookNum ;
}
}

原文:https://www.cnblogs.com/LinpStar/p/13376097.html