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的数据类型和参数传递(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

java 类参数_Java的数据类型和参数传递(详解)相关推荐

  1. java 匿名内部类 参数_Java匿名内部类原理与用法详解

    本文实例讲述了Java匿名内部类原理与用法.分享给大家供大家参考,具体如下: 一 点睛 匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法格式如下: new 父类构造器(实参列表) | 实 ...

  2. JAVA基本数据类型和引用数据类型的参数传递详解

    今天动力节点java培训机构小编为大家介绍 JAVA基本数据类型和引用数据类型的参数传递,希望通过此文大家能够熟悉JAVA基本数据类型和引用数据类型的参数传递,下面就随小编一起来了解一下JAVA基本数 ...

  3. java lombok 视频_Java开发神器Lombok使用详解

    最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...

  4. java多线程教程_java 基础教程之多线程详解及简单实例

    java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...

  5. java observer模式_Java观察者模式(Observer)详解及应用

    Java观察者模式(Observer)详解及应用 (2011-12-15 14:03:30) 标签: 杂谈 Java观察者模式(Observer)详解及应用 由于网站带有弱sns功能,因此需要设计关注 ...

  6. java闭合数据_java多线程中线程封闭详解

    线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...

  7. java静态多态_Java静态方法不具有多态性详解

    动态绑定机制使得基类的引用能够指向正确的子类对象,从而使得面向基类编程成为可能. 然而动态绑定在以下两种情况会失效. 1.基类方法是private或final修饰的 这个很好理解,因为private说 ...

  8. java类与接口思维导图_详解java接口基础知识附思维导图

    接口: 官方的含义是---->java接口是一系列方法的声明,是一些方法特征的集合 疑问: 那为什么不用抽象类呢?把他们共有的方法集合起来放在一个抽象类里面,同样可以调用哇,但是反过来想一想如果 ...

  9. java搜索代码_Java实现搜索功能代码详解

    首先,我们要清楚搜索框中根据关键字进行条件搜索发送的是get请求,并且是向当前页面发送get请求 //示例代码 请求路径为当前页面路径 "/product" 当我们要实现多条件搜索 ...

最新文章

  1. charles: 使用小结
  2. MySQL乱码问题解决步骤详解
  3. mac 安装cmake
  4. jvm_垃圾收集算法讲解(一)
  5. 如何给APK文件签名
  6. 数据结构之并查集:路径压缩继续优化并查集——20
  7. 套接字TCP控制台程序客户端代码示范
  8. 聊聊天,如果能重来,还干不干程序员?
  9. 计算机开机是什么,你了解电脑开机时都做了些什么吗?
  10. jquery 获取 radio值 与 jQuery filter() 方法
  11. Photo Size Changer三步压缩太大的jpg照片
  12. 宁波计算机软件再好的大学是,浙江这些实力较强的大学,分数会不会虚高?
  13. 视频编解码基础--01
  14. 进出口流程 报关单据
  15. C语言lo如何优化运行界面,高质量程序优化总结整理【经典】
  16. 网易设计师:交互设计要承担的8大工作职能
  17. c#--在异步方法中异步地等待任务
  18. 鸡兔同笼python
  19. 无版权?免费?无水印?高清大图?视频?
  20. 【博学谷学习记录】超强总结,用心分享 | shell基础

热门文章

  1. Tensor for ‘out‘ is on CPU, Tensor for argument #1 ‘self‘ is on CPU
  2. 上海交大 CDNet:基于YOLOv5改进的 人行道 斑马线和汽车过线行为检测
  3. python 批量改名
  4. tensorrt yolov5 批量预测学习笔记
  5. 速度提升2倍,超强悍CPU级骨干网络PP-LCNet
  6. pytorch crelu
  7. KL 损失的边界框回归
  8. js MediaSource h264
  9. qmainwindow键盘监听
  10. 类似c 的语言,类似C的脚本语言 little-lang