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

所属分类: 软件编程 / java 阅读数: 44
收藏 0 赞 0 分享

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

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:《活着》

 }
}

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

以上这篇Java的数据类型和参数传递(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

spring boot 静态资源处理方法

本篇文章主要介绍了spring boot 静态资源处理方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解spring boot 使用application.properties 进行外部配置

这篇文章主要介绍了详解spring boot 使用application.properties 进行外部配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Java实现分页的前台页面和后台代码

这篇文章主要为大家详细介绍了Java实现分页的前台页面和后台代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解spring面向切面aop拦截器

spring中有很多概念和名词,比如过滤器、拦截器、aop等。这篇文章主要介绍了详解spring面向切面aop拦截器,有兴趣的可以了解一下。
收藏 0 赞 0 分享

Java easyui树形表格TreeGrid的实现代码

这篇文章主要为大家详细介绍了Java easyui树形表格TreeGrid的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java的NIO与IO的详解及对比

这篇文章主要介绍了Java的NIO与IO的详解及对比的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中网络IO的实现方式(BIO、NIO、AIO)介绍

这篇文章主要介绍了Java中网络IO的实现方式(BIO、NIO、AIO)介绍的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 敏感信息加密处理

本文主要介绍了Java 敏感信息加密处理的相关知识:1)敏感信息加密处理我们要实现什么;2)敏感信息加密处理我做了些什么;3)敏感信息加密实现方法。具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

详解使用Spring3 实现用户登录以及权限认证

这篇文章主要介绍了详解使用Spring3 实现用户登录以及权限认证,这里整理了详细的代码,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

Java的内存机制详解

本文主要介绍了Java的内存机制的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享
查看更多