吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2279|回复: 11
上一主题 下一主题
收起左侧

[讨论] 【java】关于new Integer[]和new Integer()傻傻搞不清

[复制链接]
跳转到指定楼层
楼主
不想当咸鱼 发表于 2020-11-26 12:10 回帖奖励
如标题,今天看《疯狂java讲义》时,
[Java] 纯文本查看 复制代码
//定义一个长度为 256 的 Integer 数组
static final Integer[] cache =new Integer[-( - 128) + 127 + 1];
static {
//执行初始化,创建 -128 到 127 的工 nteger 实例,并放入 cache 数组中
for(int i
= 0; i < cache . length ; i++)
cache[i] = new Integer(i -
128) ;


很好奇,new Integer[]和new Integer()到底表示啥意思,为啥有的表示长度,有的表示元素值,对了,还有new Interger()。


第二个问题:这个你们懂吗

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
LovelyAlan 发表于 2020-11-26 12:17
本帖最后由 LovelyAlan 于 2020-11-26 12:25 编辑

Integer是int的包装类,它和int的区别在于integer是对象,Integer可以赋值null,int是不可以赋值null的. Integer[]就是数组,和你用的 int[] 是一样的. integer() 是调用这个对象的构造函数,创建一个Integer对象,它的默认值是0. 你不必纠结.再给你举个例子
[Java] 纯文本查看 复制代码
String a = new String();
String b = "value1";
String c = new String("value2");
String[] d = {"1","2"};
//-----------------
Integer a = new Integer();
Integer b = 1;
Integer c = new Integer(1);
Integer[] d = {1,2,3};

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
yanyyuan + 1 我很赞同!
不想当咸鱼 + 1 + 1 非常感谢,已经明白了

查看全部评分

3#
 楼主| 不想当咸鱼 发表于 2020-11-26 12:25 |楼主
LovelyAlan 发表于 2020-11-26 12:17
Integer是int的类,它和int的区别在于integer是对象. Integer[]就是数组,和你用的 int[] 是一样的. integer( ...

哈哈,主要是在Java中经常见(),[],{}的使用,尤其是组合使用的,以前学javascript很少遇到

比如:ArrayList<String> list = new ArrayList<String>(){{add("test1"); add("test2");}};  
4#
LovelyAlan 发表于 2020-11-26 12:28
不想当咸鱼 发表于 2020-11-26 12:25
哈哈,主要是在Java中经常见(),[],{}的使用,尤其是组合使用的,以前学javascript很少遇到

比如:Ar ...

()一般为对象的构造函数调用
[]多用于数组
<>多用于泛型
5#
LovelyAlan 发表于 2020-11-26 12:31
第二个问题:
Java中有堆栈的概念,比较对象是用对象的内存地址.比较基本数据类型才是判断值相等.如果要比较对象的值需要使用 equals方法

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
不想当咸鱼 + 1 + 1 非常感谢,已经明白了

查看全部评分

6#
努力的java小白 发表于 2020-11-26 12:44
LovelyAlan 发表于 2020-11-26 12:31
第二个问题:
Java中有堆栈的概念,比较对象是用对象的内存地址.比较基本数据类型才是判断值相等.如果要比较 ...

Java赋值对象是指向地址吧,还是说建了一个新对象,
7#
LovelyAlan 发表于 2020-11-26 13:17
努力的java小白 发表于 2020-11-26 12:44
Java赋值对象是指向地址吧,还是说建了一个新对象,

变量存储了地址,值保存在堆中
8#
soyadokio 发表于 2020-11-26 16:53
本帖最后由 soyadokio 于 2020-11-26 16:54 编辑

先补充点背景知识:
Integer全称是java.lang.Integer,是Java的8种基础类型之一int的包装类。
如果不理解什么是包装类,你就简单地理解Integer是int的加强版,唯一区别是其值能否为null,int的值只能是整数,而Integer的值除了整数以外,还可以是null。

接下来回答你的问题:
1、new Integer[] 表示Integer的数组
在Java中中括号/方括号(即[])表示数组,常见定义方法有:
[Java] 纯文本查看 复制代码
Integer[] array1 = new Integer[n]; // n为非负整数,表数组长度。下同。
Integer array2[] = new Integer[n];

2、new Integer() 表示申明一个Integer的对象,类似有字符串的new String(),非基础类型的数据类型都要以new关键字的形式申明。

最后,Interger应该是拼写错误,java里没有这个关键字。
9#
soyadokio 发表于 2020-11-26 16:58
本帖最后由 soyadokio 于 2020-11-26 17:03 编辑
不想当咸鱼 发表于 2020-11-26 12:25
哈哈,主要是在Java中经常见(),[],{}的使用,尤其是组合使用的,以前学javascript很少遇到

比如:Ar ...

双大括号/花括号的写法不建议新手使用,有安全隐患。
附标准写法:
[Java] 纯文本查看 复制代码
ArrayList<String> list = new ArrayList<String>();
list.add("test1");
list.add("test2");


真实项目中很少使用以上写法,而是采取以下写法:
[Java] 纯文本查看 复制代码
List<String> list = new ArrayList<String>();
list.add("test1");
list.add("test2");

这种写法可以理解为多态,属于面向接口编程思想。这里可以暂时仅作了解即可。
10#
 楼主| 不想当咸鱼 发表于 2020-11-26 18:12 |楼主
soyadokio 发表于 2020-11-26 16:58
双大括号/花括号的写法不建议新手使用,有安全隐患。
附标准写法:
[mw_shl_code=java,true]ArrayList  ...

非常感谢您的解答,明白了很多,因为是看源码了解内部实现原理(主要还是为了应付面试)
可惜今天的评分已经用完了,


您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 09:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表