黑马程序员技术交流社区
标题:
new的知识点
[打印本页]
作者:
胡文彬
时间:
2014-3-15 18:34
标题:
new的知识点
本帖最后由 李兆宁 于 2012-8-10 10:48 编辑
class Array2
{
public static void main(String[] args)
{
int[] arr = new int[]{2,4,12};
int[] brr = {2,4,1};
}
}
学习视频中,对于数组的定义,初始化时用new与不用new的区别在哪里呢?
什么时候需要new,什么时候不需要,有硬性规定吗?
另外问个小技巧,看视频中,老师用单行注释,一次注释多行,是怎么注释的呢?
(就是先选定要注释的行,然后就在每一行的前面加上注释符了)像:
class Array2
{
public static void main(String[] args)
{
//int[] arr = new int[]{2,4,12};
//int a = 9;
//int[] brr = {2,4,1};
}
}
作者:
周定宁
时间:
2014-3-15 19:10
new的执行过程:
1)先在内存中划分一块空间,类中的member内容拷贝到此空间,这时memeber属性得到应有的空间,member方法拥有可执行代码
2)自动初始化该对象的属性变量,使用缺省值初始化
3)初始化其需要显示赋值的属性,将缺省值覆盖,写入显示值,这叫属性显示赋值初始化
4)调用该对象的构造,执行构造的方法体,构造也可以接收一些初始化参数,用于生成对象时对属性进行初始化操作
5)对象生成,此时将对象首地址传入引用变量
作者:
黄飞1991
时间:
2014-3-15 19:15
int[] arr = new int[]{2,4,12};
int[] brr = {2,4,1};
这是同一种数组格式。
一维数组有2种格式;
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
作者:
文江江
时间:
2014-3-15 19:27
1、new创建的对象和数组存放在堆内存中(一new则创建对象),int[] brr = {2,4,1}的写法是对数组进行静态初始化,等号右边相当于产生了一个数组对象,也是存放在对内存中。因此,个人认为两种没有多大区别,只是写法不同啦。
2、老师用单行注释,一次注释多行,是怎么注释的呢?这个是用eclipse中的快捷键Ctrl+/。
作者:
李猛
时间:
2014-3-15 20:37
如果只是初始化,就数组而言,那么数组可以赋值null,或者什么等号后面什么也不写也行,默认也是null,如果new以后就是手动赋值啦,数组的值就不在是null
作者:
zms2100
时间:
2014-3-15 21:12
答案二、三楼基本上都讲完了,补个点:
什么时候需要new? 当你不确定数组中元素时就用new;
例如有那么些类似小操作题: 遍历数组,将数组元素指定为1—1000;
如果要自己给数组int[] arr初始化赋值上面,多少代码要打到吐血,但你可以知道这个数组的长度肯定是1000;
因此: int[] arr = new int[1000];
for(int i =0; i<arr.length;i++){
arr[ i ] = i + 1 ;
}
而当数组长度很短,你又知道数组元素时可以直接初始化赋值,除特殊情况外没必要 new ,直接赋值操作,代码既简洁也节约内存空间。
话多了,不过再教多LZ一个小招,有时候黑马试题会考: (总会看到,算加强记忆吧)
就是数组、集合等对象中 new 的在内存中的操作(也就是为什么上面说节约内存空间);
String s1 = "string"; //内存空间中创建了"string"这个字符串常量;
String s2 = new String("string"); //创建了一个String实例并指向已有的"string"字符串常量;
String s3 = new String("string"); //同上,但是是属于不同上者新String实例,即内存地址值不同;
System.out.println(s1==s2);
System.out.println(s2==s3); //这两个比较的就是s1、s2、s3的内存地址值;
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3)); //这两个比较的是s1、s2、s3的字符串内容是否相同;
慢慢体会,这里不止一个知识点的,O(∩_∩)O~
作者:
战狼
时间:
2014-3-16 09:26
第一种注释为Ctrl+/,还有一种是ctrl+shift+/(这种是带星号的注释)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2