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 ...
随机推荐
- c#数字图像处理(五)全等级直方图灰度拉伸
灰度拉伸也属于线性点运算的一种,也可以通过上一节的程序得到.但由于它在点运算的特殊性,所以把它单独列出来进行介绍. 灰度拉伸定义 如果一幅图像的灰度值分布在全等级灰度范围内,即在0~255之间,那么它 ...
- JS基础——ATM机终端程序编写(3.0)
利用函数进行代码实现,要点:将每一项操作单独写成一个函数,在需要时进行调用,弄清参数的传递. 创建模拟账户 使用数组创建账户 let user = ["xiaohei", 1234 ...
- zbar+opencv检测图片中的二维码或条形码
zbar本身自带检测二维码条形码功能,这里使用opencv只是做一些简单的读取图片,灰度图片以及显示条形码和二维码时用到一些绘制 // barcode-qrcodescanner.cpp: 定义控制台 ...
- 长连接 Websocket
import json from flask import Flask,request,render_template from geventwebsocket.handler import WebS ...
- java操作数组转list集合删除元素报错ConcurrentModificationException
public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>( ...
- Java:线程的六种状态及转化
目录 Java:线程的六种状态及转化 一.新建状态(NEW) 二.运行状态(RUNNABLE) 就绪状态(READY) 运行状态(RUNNING) 三.阻塞状态(BLOCKED) 四.等待状态(WAI ...
- keywords in my life
在脑子里出现的灵光一现的话语总是美好的: 1.当你试图站在人的发展,历史的发展的角度上看待问题,会发现我们身上所发生的任何事情都是必然的. 2.永远不要以好人的身份去看待和分析一件事情. 3.历史悲剧 ...
- gdiplus exception
<span style="font-size:14px;">#include <windows.h> #include <gdiplus.h> ...
- 在4K屏下以超过VMWare默认的最高分辨率运行Linux系统
前言 4K 屏,有其优点也有其弊端.优点就是分辨率高,字体和图标看起来如丝一般顺滑:缺点就是字体和图标小,费眼睛.解决这个缺点的方法也很简单粗暴,就是将系统的显示比例放大.在高分屏不很普及的时候,无论 ...
- Java实现多线程下载,支持断点续传
完整代码:https://github.com/iyuanyb/Downloader 多线程下载及断点续传的实现是使用 HTTP/1.1 引入的 Range 请求参数,可以访问Web资源的指定区间的内 ...