newjava
1. 请问一下,java中new语句的用法谢谢了
我刚学没多久,自理解就是生成新的对象时用new,因为原本堆内存里没有这个新对象的,要创建新的对象就要从堆内存中new出块小内存。
2. java中new的用法
new的作用是调用构造函数返回一个对象。在这个例子里相当于。
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader keyin =new BufferedReader(isr);
3. JAVA中加new和不加new的区别
在java中,new用来开辟堆内存,又叫初始化,一般情况下,对象创建好后,都需要用new进行实例化;不用new通常在单例模式中可见,对象在类里面创建,构造函数用private修饰,外面不能创建对象,只能调用内部方法静态方法,即对象的初始化在创建对象时已经完成
一般来说,不使用new的情况都属于一些特定的情况,比如:
1.
1
2
Class clas = Class.forName(“NewClass”);
NewClass obj = (NewClass) clas.newInstance();
- Class.forName()这个方法会加载这个类并创建一个实例
2.
1
2
Demo deo = new Demo();
Demo1 deo1 = deo.clone();
4. java里的new到底是什么意思
java里的new的英文意思就是"新的"的意思。在JAVA里就是创建一个新的实例,或者说一个新的对象,一个普通类在没有实例化之前,就是new之前,它的属性,方法等等在内存中都是不存在的。只有使用new了以后,这个类的一些东西在内存中才会真的存在,也就是说只有new了之后,这个类才能用。
举例说明:
Java中使用 new关键字 加上 构造方法,来创建一个对象,下面是一个名为Cat的类,public class Cat { public Cat() { System.out.println("这是构造方法"); }}使用new + 构造方法 来创建一个对象。
那么也就是Cat c = new Cat();前半部分,Cat c 的意思是,在内存中分配一个变量,名字叫c,这个变量是Cat类型的;后半部分,new Cat(); 这就是new关键字和构造方法来创建一个对象,Cat()是构造方法的名字。
想造出一个对象来,需要运用;new Cat(); 说明 new这个Cat类的一个对象,程序运行的时候,会调用构造方法Cat(),等这个构造方法执行完了,这个Cat类型的对象也就造出来了,真正的出现在内存当中了。
使用new关键字造出来的对象,被分配在内存的堆区(heap),而且等这个对象真正出来之后,还会做一件重要的事情:new关键字创建出一个对象之后,会把这个对象在内存中的地址返回,通过这个地址就可以找到这个对象。
那么上面的写法,Cat c = new Cat();意思就是说,把这个对象在内存中的地址 赋值 给变量c,这就是Java中引用概念,c就叫做引用,或者叫引用变量,或者直接叫变量,没问题,都是它;c的值就是一个内存地址,或者叫引用地址。
通过这个地址,就可以准确的找到刚才创建出来的对象,以后我们要使用这个对象做一些事情,调用此对象的方法什么的,都用过这个引用。
(4)newjava扩展阅读
创建一个对象并将其赋值给一个引用变量:
Point originOne= new Point(23, 94);
Rectangle rectOne= new Rectangle(originOne, 100, 200);
Rectangle rectTwo= new Rectangle(50, 100);
第一行创建了一个Point类的对象,第二个和第三个线创建一个Rectangle矩形类的对象。
这些陈述中的每一个都有三个部分(详细讨论):
声明Declaration:粗体代码是将变量名称与对象类型关联的变量声明。
实例化Instantiating:new关键字是一个java运算符,它用来创建对象。
初始化Initialization:new运算符,随后调用构造函数,初始化新创建的对象。
声明一个变量来指向一个对象,即引用
在此之前,要声明一个变量,需要写:type name
这将告诉编译器将使用name引用一个type类型的对象。用一个原始变量,这个声明也保留了适当的内存量的变量。
你也可以在自己的行上声明一个引用变量。例如:
Point originone;
如果只是声明一个像originone这样的引用变量,其价值将待定,直到有一个对象真正被创造和分配给它。只是简单地声明一个引用变量而并没有创建一个对象。
对于这样,需要使用new运算符。在代码中使用它之前,必须指定一个对象给originone。否则,会得到一个编译器错误-----空指针异常。
处于这种状态的变量,目前没有引用任何的对象,可以说明如下(变量名,originone,一个引用没指向任何对象)。
实例化一个类对象:
new运算符实例化一个类对象,通过给这个对象分配内存并返回一个指向该内存的引用。new运算符也调用了对象的构造函数。
注意:实例化一个类的对象的意思就是创建对象。创建对象时,正在创造一个类的实例,因而实例化一个类的对象。
new运算符需要一个单一的,后缀参数,需要调用构造函数。构造函数的名称提供了需要实例化类的名称。
new运算符返回它所创建的对象的引用。此引用通常被分配给一个合适的类型的变量,如:Point originone =newPoint(23,94);
由new运算符返回的引用可以不需要被赋值给变量。它也可以直接使用在一个表达式中。
5. java代码:new 类名(){方法定义}应该如何理解
new 类名(){方法定义} 这种写法是匿名内部类。
1、匿名内部类就是没有名字的内部类。这是Java为了方便程序员编写程序,而设计的一个机制。因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适,而且也免去了给它取名字的烦恼。
2、如果满足下面的一些条件,使用匿名内部类是比较合适的:
·只用到类的一个实例。
·类在定义后马上用到。
·类非常小(SUN推荐是在4行代码以下)
·给类命名并不会导致你的代码更容易被理解。
在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
3、用匿名内部类创建多线程有两种方式,和创建一个线程是一样的。
第①种继承Thread:
newThread(){
publicvoidrun(){
//dosomething
};
}.start();
第②种实现 Runnable接口:
newThread(newRunnable(){
publicvoidrun(){
//dosomething
};
}){}.start();
6. Java中new怎么用
new其实就是创建对象用的,如果在B类中要调用另A类里的方法,那么就是先在B类里NEW一个A类,如:A a=new A(),然后用NEW的对象a去调用A类里的方法,如:a.方法名,就可以在B类里用了
如果A类里是静态方法那就不用NEW A类了,直接用A类的类名去点方法,如:
A.方法名
A a=new A(),其实就是a是A类的一个实例,就是用实例a去调用A类的方法的
new是java是最常见的,同样也很重要
7. JAVA中的NEW是什么
BOY是变量(根据规范最好定义为小写字母开头,如boy)
NEW应该是new表示生成对象
就是做成一个FLOAT[4]的对象,FLOAT的长度为4的数组
我怀疑FLOAT应该写作Float
8. java中,什么时候需要new来实例化
(1)同一个对象在不同时刻体现出来的不同状态。
(2)多态的前提:
A:有继承或者实现关系。
B:有方法重写。
C:有父类或者父接口引用指向子类对象。
多态的分类:
a:具体类多态
class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
b:抽象类多态
abstract class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
c:接口多态
interface Fu {}
class Zi implements Fu {}
Fu f = new Zi();
(3)多态中的成员访问特点
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边
为什么?
因为成员方法有重写。
(4)多态的好处:
A:提高代码的维护性(继承体现)
B:提高代码的扩展性(多态体现)
(5)多态的弊端:
父不能使用子的特有功能。
现象:
子可以当作父使用,父不能当作子使用。
(6)多态中的转型
A:向上转型
从子到父
B:向下转型
从父到子
9. JAVA中方法前加new是什么意思
new的作用是实例化。
比如有一种类叫狗类,你要创造一只阿黄,你就得这么创造:
狗类 阿黄=new 狗类();
这句话的意思是声明,阿黄是属于狗类这种类的,同时他的名字叫阿黄。
在JAVA语言中,new是实例化,你也可以理解为创造,从一种类中创造出一个真实的个体。
10. java中用new定义对象有几种写法
java中用new定义对象有3种写法。
1.使用new关键字
通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。
<span style="color: #ff0000;">Employee emp1 = newEmployee();</span> 0: new#19// class org/programming/mitra/exercises/Employee: p: invokespecial #21// Method org/programming/mitra/exercises/Employee."":()V
2.使用Class类的newInstance方法
我们也可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。
我们可以通过下面方式调用newInstance方法创建对象:
<span style="color: #ff0000;">Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInstance();</span>
3.使用反序列化
当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现Serializable接口 。
<span style="color: #ff0000;">ObjectInputStream in = newObjectInputStream(newFileInputStream("data.obj"));Employee emp5 = (Employee) in.readObject();</span>