int[] a=new int[]{1,2,3,4,5};和int[] a={1,2,3,4,5};有什么区别吗?

Su_Huitong 2012-07-07 11:06:49
int[] a=new int[]{1,2,3,4,5};
int[] a={1,2,3,4,5};
有什么区别吗?
我们老师说有区别,好像在内存中的分配不一样?
...全文
5225 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2012-10-23
  • 打赏
  • 举报
回复
简单写法,无任何区别。
w304341736 2012-10-23
  • 打赏
  • 举报
回复
不知道,,,
LiangGzone 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

int[] a=new int[]{1,2,3,4,5};这个在内存中创建了两个对象;
而int[] a={1,2,3,4,5};创建了一个对象;如果是大量的代码还是这个运行比较快。
[/Quote]
+1
soton_dolphin 2012-10-22
  • 打赏
  • 举报
回复
第一种纯粹是多此一举
aaaabbbccd9876 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
int[] a=new int[]{1,2,3,4,5};这个在内存中创建了两个对象;
而int[] a={1,2,3,4,5};创建了一个对象;如果是大量的代码还是这个运行比较快。
[/Quote]对的
lsjling2468 2012-10-22
  • 打赏
  • 举报
回复
int[] a=new int[]{1,2,3,4,5};这个在内存中创建了两个对象;
而int[] a={1,2,3,4,5};创建了一个对象;如果是大量的代码还是这个运行比较快。
  • 打赏
  • 举报
回复
写法有区别,其他都差不多。即使有性能上的差异,也不会差到哪里去。。
huage 2012-07-09
  • 打赏
  • 举报
回复
有时间去纠结这样的问题 不如多了解下源码
skyWalker_ONLY 2012-07-09
  • 打赏
  • 举报
回复
不知道有没有区别
dingweidyf 2012-07-09
  • 打赏
  • 举报
回复
int[] a=new int[]{1,2,3,4,5}; 会开辟两个内存空间吧
ZZZ5512536 2012-07-08
  • 打赏
  • 举报
回复
后面种简单一点而已
happytonice 2012-07-08
  • 打赏
  • 举报
回复
写法不同
qybao 2012-07-08
  • 打赏
  • 举报
回复
有没有区别,可以用javap反编译验证一下

public class jp {
public static void main(String[] args) {
int[] a = {1,2,3};
int[] b = new int[] {1,2,3};
}
}


javac jp.java //编译
javap -verbose jp //反编译查看伪代码指令

E:\Test>javap -verbose jp
Classfile /E:/Test/jp.class
Last modified 2012-7-8; size 289 bytes
MD5 checksum 51d8eeac64245af286ff303f9a08da3a
Compiled from "jp.java"
public class jp
SourceFile: "jp.java"
minor version: 0
major version: 51
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #3.#12 // java/lang/Object."<init>":()V
#2 = Class #13 // jp
#3 = Class #14 // java/lang/Object
#4 = Utf8 <init>
#5 = Utf8 ()V
#6 = Utf8 Code
#7 = Utf8 LineNumberTable
#8 = Utf8 main
#9 = Utf8 ([Ljava/lang/String;)V
#10 = Utf8 SourceFile
#11 = Utf8 jp.java
#12 = NameAndType #4:#5 // "<init>":()V
#13 = Utf8 jp
#14 = Utf8 java/lang/Object
{
public jp();
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>
":()V
4: return
LineNumberTable:
line 1: 0

public static void main(java.lang.String[]);
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
0: iconst_3
1: newarray int
3: dup
4: iconst_0
5: iconst_1
6: iastore
7: dup
8: iconst_1
9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
15: astore_1
16: iconst_3

17: newarray int
19: dup
20: iconst_0
21: iconst_1
22: iastore
23: dup
24: iconst_1
25: iconst_2
26: iastore
27: dup
28: iconst_2
29: iconst_3
30: iastore
31: astore_2

32: return
LineNumberTable:
line 3: 0
line 4: 16
line 5: 32
}

红色部分是第一个数组的伪代码,蓝色部分是第二个数组的,可以看出是一样的
这个跟 String s = "abc"; 和 String s = new String("abc");有区别
类似的 Integer n = 5 和 Integer n = new Integer(5); 也有区别
LZ有兴趣,可以自己用javap反编译去查看伪代码
farmer-it 2012-07-08
  • 打赏
  • 举报
回复
没有区别.....
gqy281615 2012-07-08
  • 打赏
  • 举报
回复
能说出具体的区别吗 还有就是反编译的理解 谢谢
  • 打赏
  • 举报
回复
没区别,编译器会处理掉!
JPF1024 2012-07-08
  • 打赏
  • 举报
回复
不错。。。。。。

[Quote=引用 8 楼 的回复:]

后面种简单一点而已
[/Quote]

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧