this关键字和static关键字
this关键字
普通方法中,this总是指向调用该方法的对象。
构造方法中,this总是指向正要初始化的对象。
this区分成员变量和全局变量的作用,在当前类中可以省略。
this的常用方法:
让类中的一个方法,访问该类的另一个属性或方法。
使用this关键字调用重载构造方法。避免相同的初始化代码,只能在构造方法中使用,并且必须位于构造方法的第一行。
并且this关键字不能与static共同使用。
示例:
public class Test{
int a,b,c;//全局变量
Test(){//无参构造
System.out.println("正要new一个对象");
}
Test(int a,int b){//有参构造
this();//调用无参构造要位于第一行
a=a;//这里指的是局部变量而不是成员变量
this.a=a;//这样就区分了成员变量和局部变量
this.b=b;
}
Test(int a,intb,int c){
this(a,b);//调用无参要位于第一行
this.c=c;
}
void sing(){}//方法
void chifan(){
this.sing//调用本类中的sing方法
System.out.println("回家吃饭");
}
public static void main(String[] args){
Test i=new Test(2,3);//创建对象并调用两个的有参构造方法
i.chifan;
}
}
}
static关键字:
在类中,用static声明的成员变量为静态成员变量(类属性,类变量)从属于类,代表整个类的属性,为该类所有对象共享。
对于该类的所有对象来说,static成员变量只有一份,所以被该类所有对象共享。
可以使用对象.属性调用,不过一般使用,类名的属性名。
用static声明的方法为静态方法
1.不需要对象,就可以调用(类名.方法名)
2.静态方法中不能使用this关键字(this必须优先创建对象)
3.在静态方法中无法访问非静态成员变量,反之可以。(内存中分配空间时间不一样)
示例:
public class TestP{
int a;//成员变量
static int width;//静态成员变量
static void gg(){//静态成员方法
System.out.println("gg");
}
void tt(){//普通方法
System.out.println("tt");
}
public static void main(Strin [] args){
Test hi=new Test();
Test.width=2;
Test.gg;
h.gg;//通过引用也可以访问static变量或方法,不过一般使用类名。static成员名来访问。
gg();
}
}
静态成员变量(类变量)和成员变量的区别?
1.内存中保存的位置不同,成员变量保存在堆中,静态成员变量在方法区中
2.内存中保存份数不同,成员变量是每个对象一份,类变量是所有对象一份。
3.访问方式不同,成员变量:对象名.属性 stu.name="张三";类变量:类名.属性Test.name="李四";
4.在内存中分配的时间不同:成员变量:在创建对象时。 类变量:在第一次加载类的时将数据保存到方法区中分配空间。
使用static修饰代码块: 创建对象之前会被执行并按先后顺序。
格式: {
//代码
}
类变量代码块:使用static修饰,先于代码块和构造方法执行,并只执行一次
格式:static {
//代码
}
使用场景:在创建对象之前只做一次对象初始化或在创建对象之前执行某段通用代码。
静态代码---->代码块---->构造器---->方法 (先后顺序)
this关键字和static关键字的更多相关文章
- abstract关键字、final关键字、static关键字、访问修饰符详解
abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- java中this关键字和static关键字和super关键字的用法
this关键字 1. this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性: 2.可以返回对象的自己这个类的引用,同时还可以在一个构造函数当中调用另一个构造函数(这里面上面有个 ...
- 构造方法,this关键字,static关键字,封装,静态变量
1.构造方法 构造方法是一种特殊的方法,是专门用于创建/实例化对象的方法. 构造方法根据是否有参数分为两类:1.无参构造方法 2.有参构造方法 1.1无参构造方法 无参构造方法就是构造方法中没有参数 ...
- Java基础super关键字、final关键字、static关键字、匿名对象整理
super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...
- 构造方法,this关键字,static关键字,封装
1.构造方法 定义:构造方法是指实例化对象的方法 语法:[修饰符] 类名(参数){ } 根据有无参数分为有参构造和无参构造 1)有参构造 语法:[修饰符] 类名(type 实例变量,int ...
随机推荐
- 添加学生信息(Javaweb)
add.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...
- java面试题-spring篇
这次是关于spring的面试题,和上次一样依旧挑了几个具有代表性的. 一. 谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生.Spring 可以是使简单的 Ja ...
- Java入门 - 面向对象 - 01.继承
原文地址:http://www.work100.net/training/java-inheritance.html 更多教程:光束云 - 免费课程 继承 序号 文内章节 视频 1 概述 2 继承的特 ...
- 高精度算法(C/C++)
高精度算法 (C/C++) 做ACM题的时候,经常遇到大数的加减乘除,乘幂,阶乘的计算,这时给定的数据类型往往不够表示最后结果,这时就需要用到高精度算法.高精度算法的本质是把大数拆成若干固定长度的块, ...
- python类型-字典
字典是python语言中唯一的映射类型,映射对象里哈希值(键,key)和指向的对象(值,value)是一对多的关系.一个字典对象是可变的,是一个容器类型,可存储任意个数的python对象,其中也可以包 ...
- 最新Pyecharts-基本图表
Pyecharts是由Echarts而来,Echarts是百度开源的数据可视化的库,适合用来做图表设计开发,当使用Python与Echarts结合时就产生了Pyecharts.可使用pip安装,默认是 ...
- CSS-08-边框属性设置
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Day8-Python3基础-Socket网络编程
目录: 1.Socket语法及相关 2.SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道 ...
- PYTHON经典算法-完美平方
问题描述: 给定一个正整数n,找到若干个完全平方数(例如:1,4,9),使得 它们的和等于n,完全平方数的个数最少. 问题示例: 给出n=12,返回3,因为12=4+4+4:给出n=13,返回2,因为 ...
- Java错误:找不到类文件或者未加载主类
使用java命令执行.class文件时,java只会查找环境变量CLASSPATH中的目录,并会不查找当前目录,所以只要把当前目录”."加入到CLASSPATH中就可以了.