this,最常用的是用来代指对象本身,但什么是本身呢,也许有点令人迷惑,其实只要记住this表示当前对象,而当前对象就是指调用方法或者属性的那个对象。另一种用法是调用当前类的其他构造方法。
(1)指代当前对象
package TestCode1;
public class People {
String name;
public People(String name){
name=name;
}
}
这样虽然没有报错,但是实例化对象时会出现name为null的情况。因为这种写法造成一种不清楚的关系,到底是形参中的name赋予给了类中的name,还是类中的name赋予给了形参中的name呢?这时可以在前一个name前用this修饰,此时前一个name表示类中name,就不会出现混淆
package TestCode1;
public class People {
String name;
public People(String name){
this.name=name;
}
}
(2)调用当前类的其他构造函数,这也没什么特别的,即多个构造方法时,其中一个要用到其他构造方法时,可以使用this
package TestCode1;
public class People {
String name;
public People(){
System.out.println("执行了无参构造方法");
}
public People(int age){
this();//调用无参构造方法
System.out.println("执行了int构造方法");
}
public People(String name){
this(1);//调用参数为int型的构造方法
System.out.println("执行了String构造方法");
}
}
实例化后结果是:
执行了无参构造方法
执行了int构造方法
执行了String构造方法
super,出现在子类中,有两种用法,调用父类的构造方法,或者代表父类对象,去调用父类的属相或者方法。
(1)调用父类的构造方法:在子类的构造函数里第一行,格式
super(参数,参数....);
package TestCode1;
public class People {
String name;
int age;
public People(String name,int age){
this.name=name;
this.age=age;
}
public void info(){
System.out.println("姓名:"+this.name+",年龄:"+this.age);
}
}
public class Student extends People{
public Student() {
super("张三", 21);//这里调用父类的构造方法
}
public static void main(String args[]){
new Student().info();
}
}
(2)代表父类的对象,调用父类方法:格式
super.父类的属性;
super.父类的方法;
package TestCode1;
public class People {
String name;
int age;
public void info(){
System.out.println("姓名:"+this.name+",年龄:"+this.age);
}
}
package TestCode1;
public class Student extends People{
public Student(String name,int age) {
super.name=name;//调用父类的属性
super.age=age;//调用父类的属性
}
public void printf(){
super.info();//调用父类的方法
}
public static void main(String args[]){
new Student("张三",21).printf();
}
}
结果和上面一样。
break\return\continue,用于循环之中的关键字
(1)break:跳出循环,执行循环后的所有代码,break也称之中断语句,它通常用来在适当的时候退出循环,如break在switch中终止某个case并跳出switch结构
for(初始值;判断条件;设增减量)
{
............
break;//若执行break,则此块内其他语句不再被访问,并退出循环
............
}
package TestCode1;
public class Test2{
public static void main(String args[]){
int i;
for(i=1;i<=10;i++){
if(i==5)
break;
System.out.println(i);
}
}
}
结果是
1
2
3
4
(2)return:结束当前方法,经常用,不在赘言
(3)continue:跳过当层循环,不在执行循环内continue后的语句,而执行下一次循环
for(初始值;判断条件;设增减量)
{
............
continue;//若执行continue,则此块内后面语句不再被访问,并执行下一次循环
............
}
package TestCode1;
public class Test2{
public static void main(String args[]){
int i;
for(i=1;i<=10;i++){
if(i==5)
continue;
System.out.println(i);
}
}
}
结果是
1
2
3
4
6
7
8
9
10
分享到:
相关推荐
break - 2 - byte - 2 - case - 3 - catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double - 6 - else - 6 - extends - 6 - false - 7 - final - 7 - finally - 7 - float - 8 - for -...
循环控制 while、do while、for、break、continue chp4.函数 函数的三要素、return的用法 chp5.数组 一维数组、数组参数、数组返回值、数组增删、扩容、排序、二维数组 chp6.面向对象 类和对象、实例变量、构造方法...
Java基础 java控制流程语句 ...this关键字 static关键字 使用static关键字统计类的创建次数 面向对象 main函数 设计模式-单例 继承 jvm类加载顺序决定代码执行顺序 super关键字 方法重写 instanceof关键字 fi
this 和 super 16 访问控制权限 16 继承 17 多态 17 代理 17 Static 17 Final 17 接⼝和抽象类 18 接⼝ 18 抽象类 18 异常 18 认识 Exception 18 什么是 Throwable 18 常⻅的 Exception 19 与 Exception 有关的 Java...
e.a=a},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(t){return"function"==typeof t}function a(t){return"number"==typeof t}function n...
abstract do implement private this boolean double import protected throw break else instanceof public throws byte extends int return transient case false interface short true catch final long static ...
* This method will be invoked when the current page is scrolled, either * as part of a programmatically initiated smooth scroll or a user * initiated touch scroll. * * @param position ...
return super.onTouchEvent(event); } //data area private final int kFail = 1; private final int kWin = 2; private final int kPostInvalidate=3; private final int kProduceTarget=4; private ...
bstract,break,byte,...native,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,throw,throws,threadsafe,transient,void,while 。
//此处用 continue也可以,只是效率低一点 System.out.print(" "+k+"X"+j+"="+j*k); } System.out.println(); } } } 6、输出所有的水仙花数,把谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身,...
flt, str, obj, def, fun, var,true, false, null,import, export, as,continue, break, return, throw, keyof, typeof, sizeof, instanceof,try, catch, finally, if, else, for, in, switch, case, default,super,...
4.6 continue关键字与break关键字 88 4.6.1 continue关键字 88 4.6.2 break关键字 89 4.7 使用switch进行跳转 90 4.8 大例子 94 4.8.1 从控制台读取数据 94 4.8.2 结账程序中的循环 96 4.9 小结:Java不是一...
4.6 continue关键字与break关键字 88 4.6.1 continue关键字 88 4.6.2 break关键字 89 4.7 使用switch进行跳转 90 4.8 大例子 94 4.8.1 从控制台读取数据 94 4.8.2 结账程序中的循环 96 4.9 小结:Java不是一...
return super.dispatchTouchEvent(event); } private float getAngle(float xTouch, float yTouch) { double x = xTouch - (mRadius / 2d); double y = yTouch - (mRadius / 2d); return (float) (Math....
Q0040 Java关键字 "51个:abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, final, finally, float, for, goto, if, implements, import, ...
break语句和continue语句 47 语句块 48 递归结构 49 本章作业 50 本章上机操作 51 第三章 JAVA面向对象程序开发 52 编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object ...
C) 子类必须通过super关键字调用父类的构造函数。 D) 子类无法继承父类的构造函数。 28.下面说法正确的是( )。 A) final 可修饰类、属性、方法。 B) abstract可修饰类、属性、方法。 C) 定义抽象方法需有方法的返回...
B) 重载方法的参数必须有不同之处。 C) 重载方法的名字必须相同,否则就不能称为重载了。 D) 重载方法的返回类型相不相同都可以。 题目23:d 程序如下: class A { static int count=0; int number=0; A() { ...
native,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,throw,throws,threadsafe,transient,void,while 。 java语言中的保留字...
3.6.3this关键字和构造方法的调用132 3.7静态方法133 3.7.1静态方法的声明和定义134 3.7.2静态方法和实例方法的区别134 3.7.3静态代码块136 3.7.4再论静态成员变量137 3.8main()方法和命令行参数139 3.9结束...