千禧年大奖难题又称世界七大数学难题, 是七个由美国克雷数学研究所于2000年5月24日公布的数学猜想。这七个“千年大奖问题”分别是是:NP完全问题, 郝治(Hodge)猜想, 庞加莱(Poincare)猜想, 黎曼(Rieman 假设,杨-米尔斯 (Yang-Mills)理论, 纳卫尔-斯托可(Navier-Stokes方程, BSD(Birch and Swinnerton-Dyer)猜想。后面会分别为大家介绍这七个百万大奖难题。(ps:那大家知道千禧一代特指那一类人吗?千禧一代是指1982-2000年之间出生的人)
前言
本周我们来深入学习Java的new运算符。进入Java进阶篇学习以来,new运算符就是我们的常客,那我们再来好好认识一下new。
一、new运算符
一、new运算符
“new”在 Java 中意思是“新的”,可以说是 Java 开发者最常用的关键字。在 Java 中 new 的操作往往意味着在内存中开辟新的空间,这个内存空间分配在内存的堆区。堆是用来存放由 new 创建的对象和数组,即动态申请的内存都存放在堆区。栈是用来存放在方法中定义的一些基本类型的变量和对象的引用变量。Java 中一般使用 new 来创建对象,它可以动态地为一个对象分配地址。
1.1 定义格式:
它的通用格式如下:
classname obj = new classname( );
其中,obj 是创建的对象,classname 是类的名字,类名后边的( )指明了类的构造方法。构造方法定义了当创建一个对象时要进行的操作(不清楚的可以参考上周我们对构造方法的讲解。)
二、new示例
二、new运算符示例
2.1 先创建Person类
package Jinjie9;
public class Person{
private String name;
private int age;
private String sex;
public Person(String name,int age,String sex){//定义带有三个参数的构造方法
this.name=name;
this.age=age;
this.sex=sex;
}
public Person(String name,int age){//定义带有两个参数的构造方法
this.name=name;
this.age=age;
}
public void show(){
System.out.println("我叫"+name+","+"今年"+age+"岁"+","+sex);
}
}
2.2 创建PersonDemo调用构造方法
package Jinjie9;
public class PersonDemo {
public static void main(String[] args){
Person quanquan = new Person("小圈圈",18,"女");//调用三个参数的构造方法
quanquan.show();
Person IT = new Person("IT进阶之旅",1);//调用两个参数的构造方法
IT.show();
}
}
2.3 运行结果及解析
在本例中Person IT=new Person (); 的作用就是:
1.加载Person.class文件进内存;
2.在栈内存为quanquan、IT开辟空间;
3.在堆内存为Person对象开辟空间;
4.对Person对象的成员变量进行默认初始化;
5.对Person对象的成员变量进行显示初始化;
6.通过构造方法对Person对象进行成员变量赋值;
7. Person对象初始化完毕,把对象变量赋值给quanquan、IT变量;
总结new运算符的作用如下:
1.Java关键字new是一个运算符。与+、-、*、/等运算符具有相同或类似的优先级。
2.创建一个Java对象需要三步:声明引用变量、实例化、初始化对象实例。
3.实例化:就是“创建一个Java对象”-----分配内存并返回指向该内存的引用。
4.初始化:就是调用构造方法,对类的实例数据赋初值。
上面的示例中,当调用只有两个参数的构造方法时,sex参数没有定义,即sex没有指定值,所以在实例IT时,最后的sex返回null,那我们下面再细说一下关键字null。
Java空对象null
三、Java空对象null
Java 语言支持两种数据类型,分别是基本数据类型和引用数据类型,而 null 是一种特殊的引用数据类型。为了明确表示那些仅有名字而没有内存空间的变量的具体内容,Java 引入了关键字 null。null 表示“空”的意思,是绝对意义上的空,这个空指的是不存在。
3.1 null空对象
那么上面的示例中为何会出现null呢?我们应该如何修改程序使输出正常呢?
3.2 解决办法
正如上面所说的一样,null代表不存在,我们定义show()方法为:
System.out.println("我叫"+name+","+"今年"+age+"岁"+","+sex);
但是我们定义了两个构造方法,分别是三参和两参,对于IT,我们调用的是两参的构造方法,只有两个参数,对于sex并没有定义,也没有任何值传入,所以在定义输出函数的时候不应该加入sex值。我们只需要重新定义输出即可。如下图:
END
小编有话说
上周习题答案揭晓时刻
大家继续加油~
编辑:玥怡居士|审核:世外居士
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有