Java的数据类型和参数传递(详解)

作者:jingxian 时间:2022-12-30 18:52:25 

Java提供的数据类型主要分为两大类:基本数据类型和引用数据类型。

Java中的基本数据类型

名称大小取值范围
byte型 (字节)8bit-128-127 (-2^7到2^7-1)

short型 (短整型)

16bit-2^15到2^15-1
int型 (整形)32bit-2^31到2^31-1
long型 (长整型)64bit-2^63到2^63-1
float型 (单精度浮点型)32bit
double型 (双精度浮点型)64bit
char型 (字符型)16bit
boolean型 (布尔型)true和false只有两种结果,要么为“真”要么为“假”

Java中的引用数据类型:

Java作为面向对象的语言,Java中所有用class,interface,abstract class定义的都属于Java的引用数据类型。

如何理解Java中的基本数据类型和引用数据类型:

1.Java的基本数据类型是由Java语言本身提供的数据类型,不需要用户自己定义;

2.Java中的引用数据类型则是由用户自己定义的,而引用数据类型的定义需要用到基本数据类型;

3.从内存关系上来说:

Java的的内存分为两大块:栈内存和堆内存

栈内存负责存储方法中的基本数据类型变量和对象的引用变量

堆内存负责存储通过new关键字产生的数据,也就是new关键字后面的类中的属性和方法。

Java中基本数据类型存储在栈内存中,而引用数据类型的类型名存储在栈内存中,但是引用数据类型的内容则存储在堆内存中。两者之间通过地址来连接,实现互相的访问。

Java的数据类型和参数传递(详解)

4.数据由小范围往大范围转换时,JVM会自动帮我们实现类型的转换。比如:int i=10;long l=i;类似于这样的数据转换,Java的虚拟机可以自动帮我们来完成这个工作。但是当数据由大范围往小范围转换时就需要手动的加上强制类型转换。如果在转过程中出现数据的溢出则根据小范围的数据类型的值域进行变动。比如说把整形的-129赋值给byte这时候输出byte的值就是127;如果把整形的128赋值给byte类型,那么输出的就应该是-128。

Java中的参数传递:

基本数据类型:


public void test1(){
 int i=10;
 long l;
 l=i;
 System.out.println(i);//输出值10
 System.out.println(l);//输出值10
 l=i+1;
 System.out.println(i);//输出值10
 System.out.println(l);//输出值11
}

由于基本数据类型是变量名与变量值一同存储在栈内存中,i 和 l 这两个变量是互相独立的,对 l 的赋值操作并不会影响 i 值。

引用数据类型:


public class Book {
private String name;

public String getName() {
 return name;
}

public void setName(String name) {
 this.name = name;
}
}
public class Test {
public static void main(String[] args) {
 Book book1=new Book();
 book1.setName("《百年孤独》");
 Book book2=new Book();
 book2.setName("《围城》");
 System.out.println("book1:"+book1.getName());//输出:book1:《百年孤独》
 System.out.println("book2:"+book2.getName());//输出:book2:《围城》
 book1=book2;
 book1.setName("《活着》");
 System.out.println("book1:"+book1.getName());//输出:book1:《活着》
 System.out.println("book2:"+book2.getName());//book2:《活着》

}
}

Java的数据类型和参数传递(详解)

第一次new了两个对象分别是book1,book2他们的书名分别是“百年孤独”和“围城”。然后通过赋值,book1也指向了与book2一样的内存区域,这时无论是对book1 还是book2 进行操作影响的都是同一块内存区域了。这也就是为什么后面的输出都是一样的原因了。另外book1原先开辟的内存空间由于没有使用,JVM的垃圾回收机制会对其进行处理,将这些不用的内存空间进行释放。

标签:数据类型,参数传递,java
0
投稿

猜你喜欢

  • Android 判断某个Activity 是否在前台运行的实例

    2023-07-24 19:29:21
  • Java线程创建的四种方式总结

    2023-10-29 19:36:03
  • 关于SpringBoot3.x中spring.factories功能被移除的解决方案

    2022-03-25 03:04:33
  • WPF实现动画效果

    2023-06-26 17:49:44
  • C#获取USB事件API实例分析

    2021-09-01 13:55:07
  • android使用DataBinding来设置空状态

    2022-02-06 22:28:35
  • SpringBoot整合OpenApi的实践

    2023-08-03 11:59:55
  • Bootstrap 下拉菜单.dropdown的具体使用方法

    2023-07-08 19:10:46
  • maven下载jar包改用阿里云maven库的方法

    2023-02-13 07:41:58
  • C#学习笔记整理_深入剖析构造函数、析构函数

    2022-10-26 18:37:20
  • 详解Android四种存储方式

    2022-06-26 21:51:35
  • 详解Java使用Jsch与sftp服务器实现ssh免密登录

    2023-11-24 18:34:18
  • Flutter Android端启动白屏问题的解决

    2023-10-14 12:03:27
  • Android 扫描WIFI权限详解

    2023-07-03 11:34:32
  • Java非静态成员变量之死循环(详解)

    2022-04-15 09:18:20
  • Springboot中如何通过yml为实体类注入属性

    2021-08-10 13:51:28
  • java 可变参数详解及实例

    2021-06-01 10:02:42
  • Android实现IM多人员组合的群组头像

    2023-05-24 06:39:54
  • C#日期格式强制转换方法(推荐)

    2022-09-19 10:24:57
  • Android 无障碍全局悬浮窗实现示例

    2023-07-30 08:50:01
  • asp之家 软件编程 m.aspxhome.com