Java的基本数据类型有哪些?存放位置,以及和引用数据类型有什么区别?

1. 8个基本类型:

  1. byte:字节类型,占8位,最大存储数据量为2的8次方,存放的数据范围是-128-127
  2. short:短整型,16位,最大存储数据量为2的16次方-1,存储的数据范围是负的2的15次方到2的15次方-1
  3. int:整型,32位,最大存储数据量为2的32次方,负的2的31次方到2的31次方-1
  4. long:长整型,64位,最大存储数据量为2的64次方,负的2的31次方到2的31次方-1
  5. float:单精度浮点型,32位,需要加f或者F
  6. double:双精度浮点型,64位,需要加d也可以不加
  7. boolean:布尔类型,1位,只有true和false
  8. char:字符类型,16位,两个字节,用单引号赋值

Java决定了基本数据类型的大小,这些大小并不会随着机器结构的变化而变化,这种大小的不可更改是Java具有很强移植能力的原因之一。

2.基本数据类型存放在哪里

1.如果作为方法的传入参数或者方法中的局部变量的话,基本数据类型会存放在Java虚拟机栈中的局部变量表中。
Java虚拟机栈每调用一个方法就会创建一个栈帧用于存放局部变量表、操作数栈、动态连接、方法接口等信息。方法的调用和执行过程对应栈帧在Java虚拟机栈中入栈和出栈的过程。
2.如果作为对象实例中的基本数据类型,就存放在堆中。
3.如果作为静态变量,在JDK7之前会存放在永生代实现的方法区中,在JDK8之后会存放在元空间实现的方法区中。

3.基本数据类型跟引用类型有什么区别

1.存储方式
针对基本数据类型和引用类型来说,他们存储的位置基本相同。区别在于基本数据类型在存放位置存放的是数值,而引用类型数据存放的是地址值,对象实例存放在堆中。
2.传递方式
他们的本质上都是值的传递。
基本数据类型传递的是数值的副本。
引用数据类型传递的是地址值的副本。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 练习使用Java基本数据类型。使用Java的String类操作字符串和子串。 实验内容: 1.写一个程序提示用户键入某一货币数量(以分为单位),该程序应计算出如何用最少量的1元,50分,10分和1分硬币得到该数目。如195分最少可以用一个1元硬币,1个50分硬币,4个10分硬币和5个1分硬币组成。 注意不要用数组存放不同硬币的。 2.写一个程序可以对两个字符串进行测试,得知第一个字符串是否包含在第二个字符串中。如字符串”PEN”包含在字符串“INDEPENDENT”中。 可以利用字符串类方法 boolean regionMatches(int toffset, String other, int ooffset, int len) toffset 指从被调用方法的字符串的第几个字符开始测试,如果是0,表明从字符串的首字符开始。other是指使用的另一个字符串。ooffset指从另一个字符串的第几个字符开始。len指要比较几个字符。该方法返回boolean。 在本题中,ooffset为0,因为我们要测试整个短字符串;len是短字符串的长度;所以应该用 big.regionMatches(index, small, 0, small.length()) 如果big指“independent",small指"pen",则index=2时为假,index=4时为真 (b)改进程序,当第一个字符串包含在第二个字符串中时,显示第一个字符串在第二个字符串中的起始位置。 (c)改进程序,即使当用户输入顺序错误时(第一个是长字符串,第二个是短字符串),能自动在长字符串中搜寻短字符串。
Java 2实用教程(第三版)实验指导与习题解答 清华大学出版社 (编著 耿祥义 张跃平) 实验模版代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 上机实践1 初识Java 4 实验1 一个简单的应用程序 4 实验2 一个简单的Java Applet程序 4 实验3 联合编译 5 上机实践2 基本数据类型与控制语句 6 实验1 输出希腊字母表 6 实验2 回文数 6 实验3 猜数字游戏 8 上机实践3 类与对象 9 实验1 三角形、梯形和圆形的类封装 9 实验2 实例成员与类成员 12 实验3 使用package语句与import语句 13 上机实践4 继承与接口 15 实验1 继承 15 实验2 上转型对象 17 实验3 接口回调 18 上机实践5 字符串、时间与数字 19 实验1 String类的常用方法 19 实验2 比较日期的大小 21 实验3 处理大整数 22 上机实践6 组件及事件处理 23 实验1 算术测试 23 实验2 信号灯 25 实验3 布局与日历 28 上机实践7 组件及事件处理2 31 实验1 方程求根 31 实验2 字体对话框 34 实验3 英语单词拼写训练 37 上机实践8 多线程 41 实验1 汉字打字练习 41 实验2 旋转的行星 43 实验3 双线程接力 47 上机实践9 输入输出流 50 实验1 学读汉字 50 实验2 统计英文单词字 53 实验2 读取Zip文件 56 上机实践10 Java 中的网络编程 57 实验1 读取服务器端文件 57 实验2 使用套接字读取服务器端对象 59 实验3 基于UDP的图像传输 62 上机实践11 数据结构 66 实验1 扫雷小游戏 66 实验2 排序与查找 70 实验3 使用TreeSet排序 72 上机实践12 java Swing 74 实验1 JLayeredPane分层窗格 74 实验2 使用表格显示日历 75 实验3 多文档界面(MDI) 78 上机实践1 初识Java 实验1 一个简单的应用程序 2.模板代码 Hello.java package 实验一; public class Hello { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("你好,很高兴学习Java"); //命令行窗口输出"你好,很高兴学习Java" A a=new A(); a.fA(); } } class A { void fA() {System.out.println("we are student"); } } 实验2 一个简单的Java Applet程序 2.模板代码 FirstApplet.java import java.applet.*; import java.awt.*; public class FirstApplet extends Applet { public void paint(Graphics g) { g.setColor(Color.blue); g.drawString("这是一个Java Applet 程序",10,30);//在Java Applet中绘制一行文字:“这是一个Java Applet 程序” g.setColor(Color.red); g.setFont(new Font("宋体",Font.BOLD,36)); g.drawString("我改变了字体",20,50);//在Java Applet中绘制一行文字:“我改变了字体” } }实验3 联合编译 2.模板代码 public class MainClass { public static void main (String args[ ]) { System.out.println("你好,只需编译我") ; //命令行窗口输出"你好,只需编译我" A a=new A(); a.fA(); B b=new B(); b.fB(); } } public class A { void fA() {
### 回答1: JVM内存模型是Java虚拟机的内存管理模型,它用于管理Java应用程序的内存使用。JVM内存模型包括以下几个区: 1. 程序计数器:保存了当前线程执行的字节码的行号指示器,它是一个较小的内存区域,不会对Java对象造成影响。 2. 虚拟机栈:保存了Java方法执行的内部状态,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 3. 本地方法栈:与虚拟机栈类似,但专门用于执行本地(Native)方法。 4. 堆:是Java虚拟机所管理的最大一块内存区域,用于存放对象实例。所有对象实例以及数组都在堆上分配内存。 5. 方法区:存储了类信息、常量、静态变量、即时编译器编译后的代码等数据。 JVM通过这些内存区域管理Java应用程序的内存,保证程序的正常运行。 ### 回答2: JVM(Java虚拟机)内存模型是用来管理Java程序运行时所需的内存的。JVM内存模型主要由以下五个区域组成,分别是:堆、方法区(也称为永久代)、虚拟机栈、本地方法栈和程序计数器。 1. 堆(Heap):堆是JVM内存中最大的一块区域,被用来存储对象实例和数组。堆被所有线程共享,而且在JVM启动时就创建了。堆被进一步划分为新生代和老年代。新生代包括Eden区和两个Survivor区(From和To区),它们主要用于存储新创建的对象。老年代用于存储长期存活的对象。 2. 方法区(Method Area):方法区用来存储类的元数据信息,包括类的结构、常量、静态变量、即时编译器编译后的代码等。另外,方法区还包含一个常量池,用于存储类的常量。 3. 虚拟机栈(VM Stack):虚拟机栈用于存储每个线程的方法调用和局部变量信息。每个线程在执行方法时都会在虚拟机栈中创建一个栈帧,栈帧包含了方法局部变量表、操作数栈、动态链接、方法出口等信息。 4. 本地方法栈(Native Method Stack):本地方法栈类似于虚拟机栈,但是它是为执行本地(即非Java)方法而设计的。它的功能和虚拟机栈类似。 5. 程序计数器(Program Counter):程序计数器是每个线程私有的,用于存储当前正在执行的指令地址。在任意时刻,一个线程都只能执行一个方法,程序计数器记录了当前线程执行的字节码指令位置,当线程被中断或者被调度时,可以恢复到正确的执行位置。 这些内存区域在JVM内存模型中各自承担着不同的职责,通过合理的调配和管理,可以提高Java程序的性能和安全性。 ### 回答3: JVM(Java虚拟机)内存由多个不同的区域组成,用于存储不同类型的数据。主要的JVM内存区域包括: 1. 程序计数器(Program Counter):用于记录当前线程执行的字节码指令的地址。在多线程环境下,每个线程都有自己的程序计数器。 2. Java栈(Java Stack):用于存储局部变量、方法参数、操作数栈和方法调用的信息。每个方法在执行时都会创建一个栈帧,栈帧包含了方法的局部变量和操作数栈信息。 3. 本地方法栈(Native Method Stack):用于存储执行本地方法(非Java代码实现的方法)的信息。 4. 堆(Heap):用于存储Java对象实例和数组。堆是JVM内存中最大的一块区域,可以被所有线程共享。在堆中,对象实例的分配和回收由垃圾回收器负责。 5. 方法区(Method Area):用于存储JVM加载的类信息、常量、静态变量、方法字节码等。方法区也被称为永久代(Permanent Generation),尽管在Java 8中,永久代已经被元空间(Metaspace)取代。 6. 运行时常量池(Runtime Constant Pool):是方法区的一部分,用于存储编译时生成的字面量和符号引用。常量池中的内容包括类和接口的全限定名、字段和方法的名称和描述符、字符串常量等。运行时常量池是每个类或接口的常量池表的运行时表示形式。 除了以上主要的内存区域外,还有一些其他的内存区域,比如直接内存(Direct Memory),用于存储通过NIO类库分配的字节缓冲区。直接内存并不是JVM中的一部分,但是它可以被JVM管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值