java反射机制 wxRuby 程序栈 image flask razor rss python转16进制 网络游戏server编程 matlab求向量的模 java 大文件上传 excel加减混合求和 kubernetes集群搭建 python线程 python功能 python中def的用法 python学习教程 python正则表达 java的方法 java获取现在时间 java的date linux基础教程 怎么安装linux 超级兔子ie修复专家 内存修改器 linux命令详解词典 python游戏代码 js轮播图代码 脚本错误怎么解决 男网红头像 babelrc diskman execryptor 流媒体下载 动漫情侣头像一男一女 内存条有什么用 x截屏 cad代理信息 nonetype editplus中文版
当前位置: 首页 > 学习教程  > 编程语言

java封装之this和static关键字

2021/1/28 23:29:25 文章标签:

一、this关键字 特点: 在类的方法中,使用this关键字代表的是调用此方法的对象的引用this可以看做是一个变量,它的值是当前对象的引用使用this可以处理方法中的成员变了和形参同名的问题当在方法内需要用到调用到该方法的对象时,…

一、this关键字

特点:

  • 在类的方法中,使用this关键字代表的是调用此方法的对象的引用
  • this可以看做是一个变量,它的值是当前对象的引用
  • 使用this可以处理方法中的成员变了和形参同名的问题
  • 当在方法内需要用到调用到该方法的对象时,就可以用this
  • 在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法

二、this DEMO


class Student
{
	private int age;
	String name;
	double score;
		
	Student(){ 
		System.out.println("构造方法一被调用");
	}
	Student(int newage, String newname){
		System.out.println("构造方法二被调用");
		age = newage;
		name = newname;
	}	
		
	void testThis(){
		
		Student stutmp = null;
		stutmp = this;//this可以看做是一个变量,它的值是当前对象的引用
		System.out.println(stutmp.age);
		System.out.println(this.name);//在类的方法中,使用this关键字代表的是调用此方法的对象的引用/当在方法内需要用到调用到该方法的对象时,就可以用this
	}
	
	Student(int age, String name, double score){
		//this();
		this(19,"xiaoma");//在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法
		System.out.println("构造方法三被调用");
		this.age   = age;//使用this可以处理方法中的成员变了和形参同名的问题
		this.name  = name;//
		this.score = score;
	}
}

public class Demo2 {
	public static void main(String[] args) {
		Student stu1 = new Student(18, "xiaoma", 98.5);
		stu1.testThis();
		
	}
}
运行结果:
构造方法二被调用
构造方法三被调用
18
xiaoma

三、static关键字

特点:

  • 用来修饰类的成员一修饰成员变量的成为类变量(静态变量)
  • 修饰成员方法称之为类方法(静态方法)
  • 当类被加载的时候就会被加载,优先于对象的存在
  • 用来修饰语句块一称之为静态代码块,先于构造方法之前执行,只会执行一次,用来对静态成员做初始化
  • 调用的时候可以直接通过类名.成员来进行访问

注意事项:

  • 静态方法中只能访问外部的静态成员
  • 静态方法中不能出现this关键字

四、static DEMO

class Student
{
	private int age;
	String name;
	double score;
	
	static int data;
		
	Student(int age, String name, double score){
		System.out.println("构造方法");
		this.age   = age;
		this.name  = name;
		this.score = score;
	}
	
	static{//用来修饰语句块一称之为静态代码块,先于构造方法之前执行,只会执行一次,用来对静态成员做初始化
		System.out.println("静态代码快");
		data = 100;
	}
	
	static void test(){
		//System.out.println(this.age); //静态方法中不能出现this关键字也不能访问age
		//System.out.println(name);静态方法中只能访问外部的静态成员,因此只能访问data,应写为System.out.println(data);
	}
	
	void introdure(){  //方法 = 函数
		System.out.println("name=" + name + ",age=" + age + ",score=" + score);
	}
}

public class Demo2 {
	public static void main(String[] args) {
		Student stu1 = new Student(18, "xiaoma", 98.5);
		Student stu2 = new Student(18, "xiaoma", 98.5);
		stu1.score = 10;
		
		Student.data = 10;//调用的时候可以直接通过类名.成员来进行访问/用来修饰类的成员一修饰成员变量的成为类变量(静态变量)所以data就是个静态变量/当类被加载的时候就会被加载,优先于对象的存在,不需要依赖对象来访问
//		System.out.println("data=" + Student.data);
//		Demo2 D = new Demo2();//对于方法add如果不加static 可以以定义成员的方式来访问
//		System.out.println("ret=" + D.add(1, 3));
		System.out.println("ret=" + add(1, 3));
	}
	static int add(int a, int b){//修饰成员方法称之为类方法(静态方法)	
		return a + b;
	}
}
运行结果:
静态代码快
构造方法
构造方法
ret=4

本文链接: http://www.dtmao.cc/news_show_650219.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?