① java整数类型数据在内存中以( )方式表示.
1. 内存中都是0和1
2. 不同数据类型在内存中不一样
3. int整数类型存储在栈中,32位
② java数组int [ ] array 是如何分配内存的,请用图形说明
好吧,我来给你分析分析。当你代码只写成int[]array;的时候,此时表示你声明了一个int类型的数组,但是并没有初始化。也就说array这个引用变量只是存在于内存的栈区中,但并没有指向内存的堆区中的任何数组对象。此时的图是
继续上面的,刚才上面的图有点错误,栈中是线性集合表示,array是在栈底的。数组的初始化分为静态初始化和动态初始化,静态初始化就是说由程序员自己为数组元素赋值,比如int[]array=newint[]{3,5,7};此时为第一个图。
动态初始化数组就是int[]array=newint[3];就是只给定数组的长度,初始值由系统自己给该数组元素赋值。int类型的初始值是0。float和double是0.0,boolean是false。
③ int占多少字节
在C/C++语言中,int和long int的所占的字节数与编译器有关。
不过现在常用的编译器多认为int和long int相同,均为4字节,short为2字节,char为1字节。
如果只输入int,它是可以包含以上三种形式。
不同的语言不太一样,例如在Pascal中integer为2字节,byte为1字节,而longint为4字节。
建议您最好参考您的编译器的具体帮助,以得到更准确的信息。
使用前最好sizeof(int) 看看当前编译器如何定义的。
依据程序编译器的不同,int定义的字节数不同。(数据占用内存储器的大小不同)
常用的单片机编译器,如KEIL下,51类单片机的C语言中,int代表2个字节(16位);如果是32位RAM处理器的C语言中,则int代表4个字节(32位)
PIC单片机的PICC中8位系列单片机的C语言里int表示16位。
而不少PC端软件的编译器则会根据操作系统或处理器(如64位XP)把int定义为8字节(64位)
所以在多平台上编程的人员需要在使用时注意。
如需定义16位数,可使用short(短、短整数类型)定义。
(3)javaint内存扩展阅读:
在一般的电脑中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。
在之前的微型机中,int占用2字节,16比特,数据范围为-32768~32767[-2^15~2^15-1]。
使用printf输出int占用字节数量:
除了int类型之外,还有short、long、long long类型可以表示整数。
unsigned int 表示无符号整数,数据范围为[0~2^32-1]。
参考链接:INT(数据类型)_网络
④ java中的数据类型
java中的数据类型分两大类分别是基本类型和引用数据类型。
一、基本类型
1)Java中的数据类型有八种,即基本类型。具体如下:
数据类型 位数 取值范围:
Boolean 1 True|False
Byte 8 -128~127
Short 16 -32768~32767
Int 32 -2e31~2e31-1
Long 64 -2e63~2e63-1
Float 32 略
Double 64 略
Char 16 0~65535
‘ /u0000’ ~’uFFFF‘
二、引用数据类型
1)定义一个byte变量 如:byte b= -256;
由于-256超出了’Byte’的取值范围,所以要使程序不报错,有一下几种解决方法:
A:更改变量的数据类型(如:将byte改为int);
B:更改变量名的赋值,使其包括在变量的数据类型的值域内;
C:进行强制转换:如: byte b=(byte)-256:
‘进行强制转换后,虽然程序不在报错,但是有可能会使原值的精度收到影响’
D:定义一个浮点类型数时,记得要在数值的后面加上“f”或“F”。(如:Float f=10000.0f;)
E:若定义 Char c=a;定义 int n=c;则输出的n值为“a“的ASCII值,即97。
2)引用数据类型的定义
A:对象都是引用数据类型
B:应用类型使用NEW调用构造方法进行赋值
C:在Java中,除了基本数据类型以外,其余的全都属于引用数据类型, 如:
a:API中的类,如String,File等;
b:数据;
c:自定义的类,如Cars,Student
d:对象全部是引用数据类型。
(4)javaint内存扩展阅读
其他数据类型:
在java中,String本身也提供了很多的方法供我们使用:
获取到指定索引位置的字符:char c = 字符串.charAt(索引位置);
获取到指定索引位置的字符:char c = 字符串.charAt(索引位置);
获取第一次出现在字符串中的字符:int index = 字符串.index('a');
获取在字符串中字符的索引位置:int index = 字符串.index('a',1);
如果想比较两个字符串是否相等:字符串.equeals(字符串);
判断字符串是否为空:字符串.isEmpty();
获取字符串的长度:字符串.length();
根据某一个条件,将字符串进行分割:字符串.split("abc");
根据条件取出内容:字符串.substring(开始位置,结束位置);
⑤ 刚学java。在书上看到:int型变量分配4个字节内存。 还有:int型变量的取值
int是32位数据
即是4个8位,
2的32次方就是值范围,因为有负数和正数(负数占1负号位),所以值 范围是-2^31~2^31-1
⑥ Java中局部变量int基本类型变量在栈上是如何存储的,是内存地址还是值
你这个问题,跟基本类型没有关系。
调用该方法, 该方法的参数为Object,所以会涉及到自动装箱, 也就是会为基本类型创建对象。
自动装箱,
为了避免重复创建, 在-128到127这256个数是取SMALL_VALUES = new Integer[256]里面的预先创建好的对象,也就是装箱后引用的是相同的对象。
不在这个范围的整型值就会重新new一个对象,自然hash值也就不同了。
⑦ java 在内存中占几个字节
不同的数据类型占的内存大小不同 比如int 是四个字节 char是一个字节 等等
⑧ Java语言中内存管理的几个技巧
从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那么为什么却有这么N多理由来证明它确实占内存呢?两个字,陋习。
(1)别用newBoolean()。
在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolean封装传递的,大部分ORM也是用Boolean来封装boolean类型的,比如:
ps.setBoolean("isClosed",newBoolean(true));
ps.setBoolean("isClosed",newBoolean(isClosed));
ps.setBoolean("isClosed",newBoolean(i==3));
通常这些系统中构造的Boolean实例的个数是相当多的,所以系统中充满了大量Boolean实例小对象,这是相当消耗内存的。Boolean类实际上只要两个实例就够了,一个true的实例,一个false的实例。
Boolean类提供两了个静态变量:
publicstaticfinalBooleanTRUE=newBoolean(true);
publicstaticfinalBooleanFALSE=newBoolean(false);
需要的时候只要取这两个变量就可以了,
比如:
ps.setBoolean("isClosed",Boolean.TRUE);
那么像2、3句那样要根据一个boolean变量来创建一个Boolean怎么办呢?可以使用Boolean提供的静态方法:Boolean.valueOf()
比如:
ps.setBoolean("isClosed",Boolean.valueOf(isClosed));
ps.setBoolean("isClosed",Boolean.valueOf(i==3));
因为valueOf的内部实现是:return(b?TRUE:FALSE);
所以可以节省大量内存。相信如果Java规范直接把Boolean的构造函数规定成private,就再也不会出现这种情况了。
(2)别用newInteger.
和Boolean类似,java开发中使用Integer封装int的场合也非常多,并且通常用int表示的数值通常都非常小。SUNSDK中对Integer的实例化进行了优化,Integer类缓存了-128到127这256个状态的Integer,如果使用Integer.valueOf(inti),传入的int范围正好在此内,就返回静态实例。这样如果我们使用Integer.valueOf代替newInteger的话也将大大降低内存的占用。如果您的系统要在不同的SDK(比如IBMSDK)中使用的话,那么可以自己做了工具类封装一下,比如IntegerUtils.valueOf(),这样就可以在任何SDK中都可以使用这种特性。
(3)用StringBuffer代替字符串相加。
这个我就不多讲了,因为已经被人讲过N次了。我只想将一个不是笑话的笑话,我在看国内某“着名”java开发的WEB系统的源码中,竟然发现其中大量的使用字符串相加,一个拼装SQL语句的方法中竟然最多构造了将近100个string实例。无语中!
(4)过滥使用哈希表
有一定开发经验的开发人员经常会使用hash表(hash表在JDK中的一个实现就是HashMap)来缓存一些数据,从而提高系统的运行速度。比如java课程http://www.kmbdqn.cn/认为使用HashMap缓存一些物料信息、人员信息等基础资料,这在提高系统速度的同时也加大了系统的内存占用,特别是当缓存的资料比较多的时候。其实我们可以使用
⑨ 怎样用java定义一个int数组
1、首先在java软件中,在项目中引入hutool的jar包,如下图所示。
⑩ JAVA中int和Integer在内存中到底存在哪里
java被执行的时候,运行的是字节码,所以 你要看它到底做了什么 最好看字节码,而不是你的程序。这个自动装箱拆箱会在后面做一些事情,从你的代码中可能看不到。
所以反汇编成字节码后,你会看到a==b到底是做了什么呢?
25: iload_1
26: aload_2
27: invokevirtual #31 // Method java/lang/Integer.intValue:()I
30: if_icmpne 37
注意,你这里的a==b其实 对于b来说 调用了b.intValue()方法。因此 只是做了 int的比较。和存在哪里没有关系。这和自动装箱拆箱有关。