Java中的数组在使用new操作符创建时是否被初始化?
是
length
String
对
不是
1、不同于String类,String由于实现了常量池 所以new 和不new 有区别:new的话,引用变量指向堆区。不new的话,引用变量指向常量池。
2、对于数组的定义,初始化时用new与不用new 没区别,只是两种方式罢了,因为数组是引用数据类型,建立对象时,无论用不用new,数组实体都是放在堆内存中,引用变量放在栈内存。
一、Java中使用关键字new创建数组对象,格式为:
数组名 = new 数组元素的类型 [数组元素的个数]
示例代码:
public class TestOne {
public static void main(String args[]) {
int[] s ;
int i ;
s = new int[5] ;
for(i = 0 ; i < 5 ; i++) {
s[i] = i ;
}
for(i = 4 ; i >= 0 ; i--) {
System.out.println(i+"索引值:" + s[i]) ;
}
}
}
二、初始化数组:
1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
2.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;
3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。
示例代码:
public class TestTwo {
public static void main(String args[]) {
int a[] ;
a = new int[3] ;
a[0] = 0 ;
a[1] = 1 ;
a[2] = 2 ;
Date days[] ;
days = new Date[3] ;
days[0] = new Date(2008,4,5) ;
days[1] = new Date(2008,2,31) ;
days[2] = new Date(2008,4,4) ;
}
}
class Date {
int year,month,day ;
Date(int year ,int month ,int day) {
this.year = year ;
this.month = month ;
this.day = day ;
}
}
三、静态创建数组方式:
示例代码:
public class TestThree {
public static void main(String args[]) {
int a[] = {0,1,2} ;
Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ;
}
}
class Time {
int hour,min,sec ;
Time(int hour ,int min ,int sec) {
this.hour = hour ;
this.min = min ;
this.sec = sec ;
}
}
四、默认创建数组方式:
示例代码:
public class TestFour {
public static void main(String args[]) {
int a [] = new int [5] ;
System.out.println("" + a[3]) ;
}
}
这选择题的答案确实就是这几个答案,创建数组的方式也就这几种,难道高质量认证为了跟别人不一样,我要选择错的答案和错误的代码吗?还是有其他的数组创建方式???
这个说法是正确的。
解释:java中new的含义就是对某个对象进行初始化操作。说直白一点,就是“创建”操作。但是其实此时并没有进行对象赋值,之后必须赋值给一个对象才是有实际意义的。
如:
new A();
这个对象没有被引用,实际上是没有被引用,只不过是初始化,没有被实例化。
A a = new A();
这个是初始化对象并进行实例化为a对象,这样就可以对a进行操作了。
2楼其他都对,3题错了,是求最小值。
填空题第一题对。
第二题是错的,这题是想考你多维数组怎么来的。其实就是一维数组的每一项再存入一位数组。
他不是由一维数组组合来的。错在组合二字。
关于选择题第5题,二楼也是对的。因为String对象光说存储字符串的效率是比StringBuffer高的,因为他利用了常量池(你不理解无所谓,有这么个东西)。再说D选项确实是错的String类是final的,没有连接方法。
前面那个个人选择题答的好烂!1.C 2.D 3.C.4AB 5CD .选择题第4题A肯定错了,B我不太确定,但是觉得数组是有长度的,应该是不可能放下任意长度的东西,因为java的数组是不可变长的。第五题String必定存储笔StringBuffer快,因为String可以直接赋值,不需要new,这样的字符串是存在常量池里面的,在堆里面不开辟空间,常量池速度比堆快,所以B肯定正确。C。Stringbuffer是不可以直接赋值的,C错误;D:String是最终类,是不可变的,这也就是说有连接的方法肯定错误。
填空题:
1.正确
2.没听说过这说法,但应该是对的 。
比较支持第二位的答案,但还是有点不同的,楼主自己衡量一下:
第3题是求最小
第5题是bc;因为string在处理字符串时都是新开辟空间在copy的,在大数据量时,stringbuffer的优势很明显。故选b。又因为string和stringbuffer是不同的类不能这样直接赋值,但可以加个转换StringBuffer sb="(StringBuffer)这里是字符串";
java是什么语言?
因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。2、面向对象Java语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承...
java是什么意思?
因Java的安全性比较高,使其在金融服务业方面的应用广泛。大部分银行和第三方交易系统均用Java开发前台和后台电子交易系统以及数据处理项目等等。● Web应用 Java 语言在电子商务领域以及网站开发的领域都占据了一定的位置。开发人员可以用不同的框架来创建web项目。时常被应用在各个政府部门如科学技术部、...
java的常用接口有哪些?
NullPointerException在所有的异常中是最受欢迎的,而Exception异常是在所有异常层次结构的顶部。4.java.util.ArrayList 一个实现数组的数据结构的类。这个类实现了List接口,是最受欢迎的Java集合类的成员,Arr ayList和Vector之间的差异是初学者常见的问题之一,它也经常在java面试中被问到。5.ava.util....
Java语言有什么特点?
java 是面向对象,跨平台,简单易用,解释性,安全性较好,性能优异的高级语言,一次编译可以到处运行,不少银行类的网站是用Java开发的。祝好!
谁能给我讲解下这句的详细意思?java的arrays类方法和lambda表达式 @的那...
Arrays.parallelSort对数组进行并行排序。parallelSort有多个重载版本,其中一个是parallelSort(T[], Comparator<? super T>),这个方法第二个参数是一个Comparator接口的对象,这个接口只有一个方法compareTo(s1, s2),它返回s1与s2比较的结果。因此,这是一个函数式接口,可以使用lambda表达式代替:(s1, ...
C++是什么?
为分布环境尤其是Internet提供的动态内容无疑是一项非常宏伟的任务,但Java的语法特性却使我们很容易地实现这项目标。 4.健壮 Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大...
⒐已知一个班有36个学生.用n数组存放学号,a数组存放物理 成绩,b数组存...
include <stdio.h> define N 5 int main(void){ int Sx[N],tmp;float Tmp,a[N],b[N],suma=0,sumb=0,ava=0,avb=0;int i,j;for (i = 0; i < N; i++){ printf("请输入第%d的学号:",i+1);scanf("%d",&Sx[i]);printf("请输入第%d的物理成绩:",i+1);scanf("%f"...
创建一个类就是创建一个新的数据类型,而类在java中属于___数据类型...
ava中数绝类型分为基本数据类型,和引用数据类型 基本数据就是:int,float,boolean等等,8种 引用数据类型包括:类,数组,接口 创建一个类就是创建一个新的数据类型,而类在java中属于 引用 数据类型。
String Stringbuffer和StringBuilder的区别?
只要发生有关源序列(如在源序列中追加或插入)的操作,该类就只在执行此操作的字符串缓冲区上而不是在源上实现同步。每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,...
java 类加载机制有什么用
AVA类加载机制详解 “代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是变成语言发展的一大步”,这句话出自《深入理解JAVA虚拟机》一书,后面关于jvm的系列文章主要都是参考这本书。JAVA源码编译由三个过程组成:1、源码编译机制。2、类加载机制 3、类执行机制 我们这里主要介绍...
招瞿天王: 前面那个个人选择题答的好烂!1.C 2.D 3.C.4AB 5CD .选择题第4题A肯定错了,B我不太确定,但是觉得数组是有长度的,应该是不可能放下任意长度的东西,因为java的数组是不可变长的.第五题String必定存储笔StringBuffer快,因为String可以直接赋值,不需要new,这样的字符串是存在常量池里面的,在堆里面不开辟空间,常量池速度比堆快,所以B肯定正确.C.Stringbuffer是不可以直接赋值的,C错误;D:String是最终类,是不可变的,这也就是说有连接的方法肯定错误. 填空题:1.正确2.没听说过这说法,但应该是对的 .
昌吉回族自治州13939781638: java里创建数组时用new后面要不要用delete删除 - ?
招瞿天王: 这个说法是正确的.解释:java中new的含义就是对某个对象进行初始化操作.说直白一点,就是“创建”操作.但是其实此时并没有进行对象赋值,之后必须赋值给一个对象才是有实际意义的.如:new A(); 这个对象没有被引用,实际上是没有被引用,只不过是初始化,没有被实例化.A a = new A(); 这个是初始化对象并进行实例化为a对象,这样就可以对a进行操作了.
昌吉回族自治州13939781638: java数组初始化语法中是否使用运算符new?我是菜鸟,刚刚看书,发现这个问题不是特别的明白 - ?
招瞿天王: 答案是可以用也可以不用 int[] i1={1,2,3,4,5};//这个合法 int[] i1=new int[]; //这个也合法
昌吉回族自治州13939781638: java中,数组传入函数中后,再使用new,是否改变数组值呢? - ?
招瞿天王: Java中有种数据类型叫:引用类型.这个数组就是引用类型.实际上 要用new什么什么来创建的都是引用类型.什么是引用类型呢?举例来说:你new一个{1,2,3}数组,在计算机内存中实际上是这样操作的. 首先内存中会生成一个叫intArray的...
昌吉回族自治州13939781638: java的数组都是动态数组,必须使用new为其分配空间.是对还是错? - ?
招瞿天王: java数组不是动态数组,不一定实用new为其分配.String[] arr = {1,2,3,5};
昌吉回族自治州13939781638: java 数组一定要new吗? - ?
招瞿天王: 举个例子:int[] num=new int[9]; 在“=”的左边是变量(数组)名和变量类型,“=”右边是相对应的内存空间. 如果你的数组是一个新的数组,那就必须要使用“new”关键字来创建新的数组空间;但是如果已经有了一个既定的内存空间可以直接指定给“num”那就不需要“new”了. 也就是说,“=”是用来指定内存的空间位置,“new”是用来创造新的空间,两者有联系却不是必然联系. 我的答案是:可以直接int[] A=f();
昌吉回族自治州13939781638: java中使用new构造数组会不会调用类的默认构造函数比如:b ?
招瞿天王: 会啊,但是如果你赋值了就不会了
昌吉回族自治州13939781638: Java中二维数组的使用 - ?
招瞿天王: 这个问题我测试过了,应该是没问题的吧.public class test{ public static void main(String[] args) { int i=1; float f[][]=new float[2][2]; f[i][i]=1; System.out.println(f[1][1]); } } 上面的程序输出的结果为1.0,你试试看吧.