首页 > 系统相关 >java中的数据类型及内存分析

java中的数据类型及内存分析

时间:2023-02-18 00:11:21浏览次数:41  
标签:初始化 java int 数据类型 Person 引用 new 内存

1. java中的类型

        

 

 

      (1)除基本类型之外的变量类型都称之为引用类型。

     (2)java中的变量

               ① 局部变量:使用前必须被初始化或赋值

               ② 成员变量:不赋值有默认值(数值0或0.0、字符char为\u0000,布尔类型为false,所有引用类型都是NULL)

     (3)boolean类型不能与其他任何类型转换

     (4)java中基本类型全都是有符号类型

 

2. java和C++引用的区别

     (1) c++中:引用就是某个变量的别名

 

     (2)Java 中:引用类似于 c++中地址指针的包装,会有一个内部转化为指针的过程

 

                

3. 引用类型大小

          java的引用相当于c++的指针,C++的指针是占四个字节,java引用应该也是固定的大小。sun hotspot jvm和ibm jvm中都把引用实现为一个指针,因此在64位平台上占8个字节,在32位平台上占4个字节。

       注:引用本身保留在栈中,引用所指向的对象保存在堆中

4. 参数传递

        java全部采用值传递。传的是基本类型时,传的是值的拷贝;传参的是引用类型,形参和实参指向同一个堆空间对象。

 

5. 数组内存分析

      5.1 一维数组的初始化

         (1)静态初始化:int[ ] b = {1,2,3} 

           (2)   动态初始化:int[ ] b = new int[4] ; 或 int[ ] b = null; b = new int[4]

            

      5.2 二维数组的初始化

           二维数组允许每行元素个数不同

        (1)静态初始化:int [][] b ={ { 1,2,3 },{1,2,3,4,5,6} ,…… };

        (2)动态初始化:

                    ① 一次性分配完  int[][] a =new int[2][3];

                    ②一层一层分配:int [][]a = new int[4][];   //列数未指定,可以随便定义

                                                 a[0]=new int[2]; a[1]=new int[3];                 注:  二维数组的行数: 数组名.length                            某一行元素个数: 数组名[行的索引].length                           Int [][]a = new int[][4] //非法

         

6. 对象的比较

      (1)==只能用来比较两个变量的字节组合是否相等。  比较基本数据类型时比较的是值,比较两个对象时比较的是两个对象的地址值(引用值)。

      (2)equals()来判断两个对象内容是否相等

    代码分析:

         

 

 

           常量会被放在常量池内, 第一种情况相当于开辟了空间,然后把常量池中的字符复制进空间内。

           第二种情况相当于直接都指向了常量池。所以 str3、str4 所存放和指向的内容均相同。

       

7. 对象数组的使用

        静态初始化: Person p[ ]={ new Person(), new Person()……}         动态初始化: Person p[ ] = new Person [ 3 ]; p[0] = new Person[ ] ……

 

标签:初始化,java,int,数据类型,Person,引用,new,内存
From: https://www.cnblogs.com/dkhlaojogo/p/17131640.html

相关文章

  • JavaScript 日期和时间的格式化
    一、日期和时间的格式化1、原生方法1.1、使用toLocaleString方法Date对象有一个toLocaleString方法,该方法可以根据本地时间和地区设置格式化日期时间。例如:const......
  • Java中获取class对象
    1、为什么要获取class对象当我们要获取类的信息及方法,利用Java中的反射机制,便于我们更加灵活的编写代码,可以在程序运行时装配代码,还可以实现动态代理。反射机制允许程序在运......
  • JavaScript normalize function All In One
    JavaScriptnormalizefunctionAllInOneUnicodestring/Emojistring国际化String.prototype.normalize()Thenormalize()methodreturnstheUnicodeNormaliz......
  • PAT-basic-1005 继续(3n+1)猜想 java
    一、题目卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数......
  • Java 之 Charset.defaultCharset()
     简述以一个故事^1开局。IDEA在使用Gradle时可能会输出乱码,常见的解决方式是CustomVMOptions里面增加-Dfile.encoding=UTF-8。但故事作者通过细致分析找到问题的......
  • PAT-basic-1004 成绩排名 java
    一、题目读入n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含1个测试用例,格式为第1行:正整数n第2行:第1......
  • Java的IO、NIO和Okio
    二、Java的IO、NIO和Okioio是输入输出流,作用就是对外部进行数据交互使用的,内部和外部分别表示的是内存以及内存以外的,外部包括手机文件,电脑文件和网络,服务器等都称为外部......
  • PAT-basic-1003 我要通过!java
    一、题目“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送——只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“......
  • Java面向对象基础
    Java面向对象基础什么是面向对象编程,Java类和对象有什么区别OOP(ObjectOrientedProgramming)编程是利用“类”和“对象”来创建模型实现对真实世界的描述使程序更加......
  • JVM内存模型分析
    JVMJVM内存模型解析JVM内存模型:https://juejin.cn/post/7024358170642350093https://www.cnblogs.com/blknemo/p/13296007.html线程独占:JVM栈,本地方法栈,程序计数......