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的数据类型和参数传递详细介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处
