为变量或字符串对象赋空值null、长度为0的字符串、不赋值 占不占内存

代码:

public class TestNullAndNothing {
    int a;//自动赋值为0;如果是对象,自动赋值为null
    public static void main(String[] args) {
        String s="";
        System.out.println("长度为0的字符串:"+RamUsageEstimator.sizeOf(s));//打印所占内存大小
        String ss=null;
        System.out.println("字符串赋空值:"+RamUsageEstimator.sizeOf(ss));

        int b=11;//变量不初始化编译不能通过
        System.out.println("全局变量不赋值:"+RamUsageEstimator.sizeOf(new TestNullAndNothing().a));
        System.out.println("变量赋初值:"+RamUsageEstimator.sizeOf(b));
    }
}

结果:

长度为0的字符串:40

字符串赋空值null:0

全局变量不赋值:16

变量赋初值:16

总结:

1.长度为0的字符串占内存

2.字符串赋null不占内存

3.全局变量会自动赋值(整形变量,自动赋值为0;如果是对象,自动赋值为null;String是对象)

4.局部变量不赋值不能通过编译

如何计算java内存所占大小,参阅:https://www.jianshu.com/p/9d729c9c94c4

原文地址:https://www.cnblogs.com/superyoungy/p/12663849.html

时间: 2024-10-26 04:44:59

为变量或字符串对象赋空值null、长度为0的字符串、不赋值 占不占内存的相关文章

求一个字符串中出现相同且长度最长的字符串

题目:输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置.                例如:"yyabcdabjcabceg",输出结果应该为abc 和3. #include<iostream> #include<string> using namespace std; int main() { string str, tep; cout << "输入字符串" << endl; cin &

求一个字符串中出现同样且长度最长的字符串

题目:输入一行字符串.找出当中出现的同样且长度最长的字符串,输出它及其首字符的位置.                比如:"yyabcdabjcabceg",输出结果应该为abc 和3. #include<iostream> #include<string> using namespace std; int main() { string str, tep; cout << "输入字符串" << endl; cin &

Java中字符串对象

Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式.然而这两种实现其实存在着一些性能和内存占用的差别.这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池. 工作原理 当代码中出现字

《python源码剖析》笔记 python中的字符串对象

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.      PyStringObject --> 变长不可变对象 typedef struct{ PyObject_VAR_HEAD//ob_size变量保存着对象中维护的可变长度内存的大小 longob_shash; //缓存该对象的hash值,用于dict的查询 intob_sstate; //标志该对象是否经过intern机制的处理 char ob_sval[1];// 字符指针

对象篇学习-字符串对象

1.返回星期方法: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>获得星期</title> <script type="text/javascript"> var mydate=new Date()

JavaScript--String 字符串对象属性

访问字符串对象的属性length: stringObject.length; 返回该字符串的长度. var mystr="Hello World!"; var myl=mystr.length; 以上代码执行后,myl 的值将是:12 访问字符串对象的方法: 使用 String 对象的 toUpperCase() 方法来将字符串小写字母转换为大写: var mystr="Hello world!"; var mynum=mystr.toUpperCase(); 以上

Javascript 中的false、0、null、undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: [html] view plaincopyprint? <script type="text/javascript"> alert(typeof(false) === 'boolean'); alert(typeof(0) === 'number')

Javascript 中的false,零值,null,undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: <script type="text/javascript"> alert(typeof(false) === 'boolean'); alert(typeof(0) === 'number'); alert(typeof("")

JavaScript中的内置对象(数组、Boolean、Number、字符串)和自定义对象

JS中常用的内置对象有:数组.Boolean类.Number类.字符串.下面分别介绍各自的常用方法 JS中的数组 1.数组的声明 ①字面量声明 直接使用[]声明数组: var arr=[1,2,"3",true,null,undefined]; 在JS中同一数组可以存放各种数据类型. ②使用new关键字声明:var arr = new Array(); 参数可以有三种形式: >>> 不传参数,表示创建一个长度为0的空数组: >>> 传入一个数值,表示