Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java中所有的关键字及用法

Java中所有的关键字及用法

作者头像
全栈程序员站长
发布于 2022-09-08 07:14:46
发布于 2022-09-08 07:14:46
32000
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

基本数据类型:

int:

int 基本数据类型 ,内存空间占8位 取值范围-128~127 int i=10;

float

float 基本数据类型 ,内存空间占32位 取值范围 -2^31~-2^31-1 float f=10.0f;

long

long 基本数据类型 内存空间占 64位 取值范围 -2^63~-2^63-1 long l=10l;

short

short 基本数据类型 内存空间占16位 取值范围 -2^15~-2^15-1 short s=10;

byte

byte 基本数据类型 内存空间占8位 取值范围 -2^7~-2^7-1 byte b=10;

char

char 基本数据类型 内存空间占16位 取值范围 0~-2^16-1 char c=’c’;

double

double 基本数据类型 内存空间占32位 取值范围 -2^63~-2^63-1 double d=10.0d;

boolean

boolean 基本数据类型 内存空间占8位 取值范围 true~false boolean b=true;

权限修饰符:

public

Java语言修饰符,翻译为公共的。被public修饰的类,属性和方法不仅可以跨类使用,还可以跨包使用。

private

Java语言修饰符,翻译为私有的。是java语言中,访问权限最窄的修饰符。被private修饰的属性和方法,只能由本类使用,其子类不可以访问,更不可以跨包访问。

default

Java语言权限修饰符,在java语句中,通常称为 默认修饰符,只允许同包的中的类进行访问。

protected

Java语言权限修饰符,在java语句中,介于public和private之间的修饰符,起到保护的作用,即使不是同包的子类也可以访问,被protected修饰的类,方法,属性只能被本身的方法和子类访问。

条件判断语句:

if else

if用于条件判断,一般配合 elseif else使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void test(){

int a=10;
int b=5;

if(a>b){
sout("a大于b");
}
elseif(b>a){
sout("b大于a";
}
else{
sout("a和b相等";
}



}

switch一般和case和break一起联合使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String name="lixiaobin"switch(name){

case "lixiaobin":
sout("lixiaobin");
breakcase "lixiaobin":
sout("zhangsan");
breakcase "lixiaobin":
sout("lisi");
breakdefault:
sout("无效")
}

在switch中,查找name相同的值,如果不管找不找得到都break,跳出。

1、switch分支语句中的表达式可以为byte,short,int,char型,常量值也是byte,short,int,char型,且常量值必须不同。注意:表达式的值不可以是long型数据,否则会导致编译错误。

2、switch语句中,如果表达式的值和case后面的常量值相同,则执行其后语句,直到遇到break语句或执行至switch完结为止。如果表达式的值和case后面的常量值都不相同,则直接执行default后语句,若无default,switch不会有任何处理。

循环语句

while

while一般和else 和continue break一起用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void test(){

int i=1;
whlie(true)

sout(“学习java”);
i++;
if(i=5{

break;  
//i=5的时候跳出循环
}
}

continue

continue为跳出本次循环

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Main {
    public static void main(String[] args) {
        int n=5,j=12;
        while(n<=j){
            System.out.print(n+"\t");
            n++;
            continue;
        }
        System.out.println("n="+n);
    }
}

do while

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
语法结构:

do{
循环结构

}while(判断条件);

先执行do循环结构里面的代码,然后判断

while里面的条件是否符合,直到不成立为止,

所以do……while至少会被执行一次。

for 语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void test(){

int[] integers = {1234};
for (int j = 0; j<integers.length; j++){

int i = integers[j];

System.out.println(i);

}

}

for语句有一个加强foreach语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void test(){

int[]numbers={1234567}

for(int num:numbers){

    sout(num)
} 
}

abstract

abstract解释为抽象的 ,可以用来修饰的结构:类、方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Person p1=new Person();//一旦Person类抽象了就不可以实例化了。

abstract class Person{
    
}

abstract修饰类:抽象类

  • 此类不能实例化
  • 抽象类中一定有构造器。便于子类实例化时调用、
  • 开发中,都会提供抽象类的子类,让子类对象实例化。完成相关的操作。

abstract修饰方法:抽象方法。

抽象方法只有方法的声明,没有方法体。 包含抽象方法的类,一定是抽象类。反之,类如果是抽象类,不一定有抽象方法。 若子类重写了父类中的所有的抽象方法后,此子类方可实例化。 若子类没有重写父类中所有的抽象方法,则此子类也是个抽象类。需要用abstract修饰一下。

static

static被解释为静态方法,静态方法不需要依赖任何对象就可以访问,所有,对于静态方法来说,是没有this的,但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public class MyObject {
    	//非静态变量
    	private String str1 ="property";
    	//静态变量
    	private static String str2 ="staticProperty";
    	
    	public MyObject() {
    		
    	}
    	//非静态方法
    	public void print1() {
    		System.out.println(str1);
    		System.out.println(str2);
    		print2();
    	}
    	
    	//静态方法
    	public static  void print2() {
    		//这一句报错,报错信息是Cannot make a static reference to the non-static field str1
    		System.out.println(str1);
    		System.out.println(str2);
    		/*
    		 * 调用非静态的方法会报错,
    		 * Cannot make a static reference to the non-static method print1() from the type MyObject
    		 */
    		print1();
    	}
    }

final

1.当用final修饰一个类的时候,这个类不能被继承,如果你想让一个类永远不被继承,那么就可以用final修饰。final类中的成员变量需要根据需要设为final,但是要注意,final类中的所有成员方法都会被隐式的指定为final方法。

finally

是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获,finally块都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容,是在try块内容发生catch所声明的异常时,跳转到catch块中执行。finally块则是无论异常是否发生,都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。

finalize

finalize是方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者被执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

extends

在java中,extends是继承。 a extends b。 此处a为子类,b为父类。

在java中,一个子类只可以有一个父类,但是一个父类可以有多个子类。

super

1.子类重写父类的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class A {
	
	private String nameA="A";
	
	public void getName() {
		System.out.println("父类"+nameA);
	}
	public static void main(String[] args) {
	}
	
}
 
 
public class B extends A{
	private String nameB="B";
	
	@Override
	public void getName() {
		System.out.println("子类"+nameB);
		super.getName();
	}
	
	public static void main(String[] args) {
		B b=new B();
		b.getName();
	
	}
}

输出结果:

子类B

父类A

在子类B中,我们重写了父类的getName()方法,如果在重新的getName方法中我们去调用父类的相同方法,必须要通过super关键字显示的指明出来。

如果不表明出来,按照子类的优先原则,相当于还是在调用重写的getName方法,就形成了死循环。

2.子类重新父类的变量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class A {
	
	 String nameA="A";
 
}
 
public class B extends A{
	 String nameA="B";
	
	
	public void getName() {
		System.out.println("子类"+nameA);
		System.out.println("父类"+super.nameA);
	}
	
	public static void main(String[] args) {
		B b=new B();
		b.getName();
	
	}
}

输出结果:

子类B

父类A

在这段代码中,把B赋值给nameA。重写了父类的变量。在调用时,为了区分哪个是子类的变量,哪个是父类的变量,在父类变量前面加 super,指明这个是父类的变量

3.在子类的构造方法中。

1、调用父类被子类重写的方法;

2、调用父类被子类重定义的字段(被隐藏的成员变量);

3、调用父类的构造方法;

其他情况,由于子类自动继承了父类相应属性方法,关键字super可以不显示写出来。

4.关于构造器方法中的super

如果一个类中没有写任何的构造方法,JVM会生成一个默认的无参构造方法。在继承关系中,由于在子类的构造方法中,在继承关系中,由于在子类的构造方法中,第一条语句默认为调用父类的无参构造方法(即默认为super(),一般这句话省略了)。所以当在父类中定义了有参构造函数,还是没有定义无参构造函数时,IDE会强制要求我们定义一个相同参数类型的构造器。

第一种情况:编译不通过

不能直接继承A类,因为A类中存在有参构造函数

第二种情况:编译不通过

重写有参函数以后,还是报错,因为在子类的构造方法中,系统会默认这个有参函数是父类的,不是子类的。

第三中情款:编译通过

在子类的方法体中,调用super,这样就可以区分出来。哪个是父类的方法,哪个是子类的方法。

异常处理:

throw 就是自己进行异常处理,throw一旦进入被执行,程序立即会转入异常处理阶段,后面的语句就不再执行, 而且所在的方法不再返回有意义的值!

throws

用来声明一个方法可能抛出的所有异常信息,将异常声明但是不处理,而是将异常往上传,谁调用我就 交给谁处理。

try

出现在方法体中,它自身是一个代码块,表示尝试执行代码块的语句。如果在执行过程中有某条语句抛出异 常,那么代码块后面的语句将不被执行

catch

出现在try代码块的后面,自身也是一个代码块,用于捕获异常try代码块中可能抛出的异常。catch关键字 后面紧接着它能捕获的异常类型,所有异常类型的子类异常也能被捕获。

finally

是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获,finally块都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容,是在try块内容发生catch所声明的异常时,跳转到catch块中执行。finally块则是无论异常是否发生,都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。

this

this关键字主要有三个应用:

  1. this调用本类中的属性,也就是类中的成员变量;
  2. this调用本类中的其他方法;
  3. this调用本类中的其他构造方法,调用时要放在构造方法的首行。

调用成员变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Student{
    String name;
    private void SetName(String name){
        this.name = name;
    }
}

调用成员方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ThisTest {
    String name;

   private void setName(String name) {
        this.name = name;
        System.out.println("setName: " + this.name);
    }


    private void thisTest(String name) {
        this.setName(name);
        System.out.println("thisTest: " + this.name);
    }

    public static void main(String[] args) {
        ThisTest tt = new ThisTest();

        tt.setName("Yida");
        tt.thisTest("Jenny");

    }
}

调用构造方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Student { //定义一个类,类的名字为student。 
    public Student() { //定义一个方法,名字与类相同故为构造方法
        this(“Hello!);
    }
    public Student(String name) { //定义一个带形式参数的构造方法
    }
}

package

在package是包名

return

java中的return语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,一个是返回值方法指定的类型的值(这个值总是确定的),一个是结束方法的执行(仅仅返回一个return)。

return 有两种形式。

一个是有返回值类型的,另一个是没有返回值类型的。

一般方法前有void代表无返回值,没有void有返回值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TestReturn { 
    public static void main(String args[]) { 
       TestReturn t = new TestReturn(); 
        t.test1(); 
        System.out.println(t.test2()); 
    } 
 
 
    /** 
     * 无返回值类型的return语句测试 
     */ 
    public void test1() { 
        System.out.println("---------无返回值类型的return语句测试--------"); 
        for (int i = 1; ; i++) { 
            if (i == 4) return; 
            System.out.println("i = " + i); 
        } 
        //System.out.println("hello,this world");此句不能执行,不可达代码
    } 
 
 
    /** 
     * 有返回值类型的return语句测试 
     * @return String 
     */ 
    public String test2(){ 
        System.out.println("---------有返回值类型的return语句测试--------"); 
        return "返回一个字符串"; 
    } 
}

new

new被翻译为“新的”。 在java中,创建一个实例,或者说有一个新的对象,都需要new。在new之前,它的属性,方法在内存中是不存在的。只有使用new之后,这个类的东西才会真实存在在内存中存在的,也就是说new出来之后,才能使用。

interface

在java中,interface被翻译为接口。

在java中使用inplements关键字实现接口,并重写接口中的方法。

inplements

inplements也可以用作类的继承,不常用!

类 A 继承 类 B 写成 class A implements B{}.

class

一般在java中,class用来创建对象。

有三种获得Class对象的方式:

  1. Class.forName(“类的全限定名”)
  2. 实例对象.getClass()
  3. 类名.class (类字面常量)

void

在java中,void表示为null。所有没有返回值的方法都使用它来表示返回值类型。

Void是void的封装类型,API上称其为占用符(placeholder)。

声明一个 Void 变量通常是没有什么意义的,因为没有可为其赋值的实例,注意不能用 void 为其赋值(void 是类型而不是值)。 Void 变量唯一能持有的是 null。

import

import就是在java文件开头的地方,先说明会用到那些类别。 接着我们就能在代码中只用类名指定某个类,也就是只称呼名字,不称呼他的姓。

在程序开头写

import java.lang.System; import java.io.InputStream; import java.io.InputStreamReader; import java.io.BufferedReader;

synchronized

  • 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁
  • 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁
  • 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。

作用于实例方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class AccountingSync implements Runnable{
    //共享资源(临界资源)
    static int i=0;

    /**
     * synchronized 修饰实例方法
     */
    public synchronized void increase(){
        i++;
    }
    @Override
    public void run() {
        for(int j=0;j<1000000;j++){
            increase();
        }
    }
    public static void main(String[] args) throws InterruptedException {
        AccountingSync instance=new AccountingSync();
        Thread t1=new Thread(instance);
        Thread t2=new Thread(instance);
        t1.start();
        t2.start();
        t1.join();
        t2.join();
        System.out.println(i);
    }
    /**
     * 输出结果:
     * 2000000
     */
}

修饰静态方

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class AccountingSyncClass implements Runnable{
    static int i=0;

    /**
     * 作用于静态方法,锁是当前class对象,也就是
     * AccountingSyncClass类对应的class对象
     */
    public static synchronized void increase(){
        i++;
    }

    /**
     * 非静态,访问时锁不一样不会发生互斥
     */
    public synchronized void increase4Obj(){
        i++;
    }

    @Override
    public void run() {
        for(int j=0;j<1000000;j++){
            increase();
        }
    }
    public static void main(String[] args) throws InterruptedException {
        //new新实例
        Thread t1=new Thread(new AccountingSyncClass());
        //new心事了
        Thread t2=new Thread(new AccountingSyncClass());
        //启动线程
        t1.start();t2.start();

        t1.join();t2.join();
        System.out.println(i);
    }
}

修饰代码块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class AccountingSync implements Runnable{
    static AccountingSync instance=new AccountingSync();
    static int i=0;
    @Override
    public void run() {
        //省略其他耗时操作....
        //使用同步代码块对变量i进行同步操作,锁对象为instance
        synchronized(instance){
            for(int j=0;j<1000000;j++){
                    i++;
              }
        }
    }
    public static void main(String[] args) throws InterruptedException {
        Thread t1=new Thread(instance);
        Thread t2=new Thread(instance);
        t1.start();t2.start();
        t1.join();t2.join();
        System.out.println(i);
    }
}

strictfp (不常用)

trictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。 你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字。

volatile(JMM线程安全的保证)

volatile 是java虚拟机提供的轻量级同步机制

transient

(1)序列化 Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输。一般地,当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让实体类实现Serializable接口,目的就是为了让其可序列化。当然,序列化后的最终目的是为了反序列化,恢复成原先的Java对象实例。所以序列化后的字节序列都是可以恢复成Java对象的,这个过程就是反序列化。 (2)为什么要用transient关键字? 在持久化对象时,对于一些特殊的数据成员(如用户的密码,银行卡号等),我们不想用序列化机制来保存它。为了在一个特定对象的一个成员变量上关闭序列化,可以在这个成员变量前加上关键字transient。 (3)transient的作用 transient是Java语言的关键字,用来表示一个成员变量不是该对象序列化的一部分。当一个对象被序列化的时候,transient型变量的值不包括在序列化的结果中。而非transient型的变量是被包括进去的。 注意static修饰的静态变量天然就是不可序列化的。

goto 非常不常用

Java中对标签的功能进行了限制,使它只能对迭代语句起作用,唯一的作用就是跳出循环嵌套

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156378.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Java50个关键字总结
abstract修饰类,这个类就是抽象类,抽象类中可以有非抽象变量和成员变量,也可以有普通方法、构造方法。但是不能实例化,只能被子类继承。 如果子类不是抽象类,则必须重写父类的抽象方法。
用户7886150
2020/12/13
6630
*Java中的关键字*
关键字是Java中的一些具有特定含义的单词,定义的变量名不能和关键字冲突。(下面按如下图所示的顺序进行学习)
一半是我
2020/04/17
7920
【java基础】java关键字总结及详解
Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
全栈程序员站长
2022/09/08
4840
盘点历届 Java 语言的关键字,一定有你不认识的
在 Java 编程语言中,关键字是具有特殊含义的保留字,它们用于表示语言中的特定功能和操作。
Java极客技术
2024/06/25
2230
盘点历届 Java 语言的关键字,一定有你不认识的
Java之Java关键字及其作用
private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
全栈程序员站长
2022/06/30
9910
Java50个关键字总结
abstract修饰类,这个类就是抽象类,抽象类中可以有非抽象变量和成员变量,也可以有普通方法、构造方法。但是不能实例化,只能被子类继承。 如果子类不是抽象类,则必须重写父类的抽象方法。
用户7886150
2020/12/13
6260
java关键字_Java关键字
Java keywords are the reserved words that are used by the Java compiler. These keywords have special meaning to the Java compiler. The reserved keywords help us in writing code and help the compiler in understanding the code and create the bytecode.
用户7886150
2020/12/13
1.1K0
Java几个重要关键字的使用
跟类相关:package(包) class(类) abstract(抽象) extends(继承) implements(实现) interface(接口)
用户7886150
2020/12/13
3130
【JAVA-Day04】Java关键字和示例:深入了解常用关键字的用法
本文深入探讨了Java编程语言中的常用关键字及其示例用法。我们从基本的数据类型声明开始,逐步介绍了控制流、异常处理、多线程、类继承等多个关键字的实际应用。通过详细的示例代码,读者将能够更好地理解这些关键字的功能和用法,为Java编程提供了坚实的基础。无论是新手还是有经验的开发人员,都可以从本文中获得有关Java关键字的重要知识和实用技巧。
默 语
2024/11/20
1930
干货——详解Java中的关键字
在平时编码中,我们可能只注意了这些static,final,volatile等关键字的使用,忽略了他们的细节,更深层次的意义。
Janti
2018/08/01
4400
干货——详解Java中的关键字
Java中this关键字的作用和用法
这段代码中,创建了一个类Student,有成员变量name与成员方法SetName(String name),由于成员方法接收的形参名称与成员变量相同,都是name,所以,这里可以使用this关键字来调用本类中的成员变量。其作用可以简单的这么理解:this关键字就是调用本类中的成员变量。
全栈程序员站长
2022/09/12
6170
Java关键字和相关疑问总结
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
李玺
2021/11/22
5011
【Java基础教程】标识符与关键字
Java中的包名、类名、方法名、参数名、变量名等都需要用一个符号来标识 命名规则 ①可由大小写字母、数字、下划线、美元符号组成 ②必须以字母、下划线、美元符号开头 ③严格区分大小写字母 ④长度无限制 ⑤不能与关键字重名
hacker707
2022/11/27
6430
【Java基础教程】标识符与关键字
Java关键字final、static总结与对比
Java关键字final有“不可改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
chenchenchen
2022/03/09
9570
Java关键字final、static总结与对比
Java this 关键字用法
构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法中通过this(paras…)来调用其他的构造方法。 使用this来调用其他构造方法有如下几个约束。 1) 只能在构造方法中通过this来调用其他构造方法,普通方法中不能使用。 2) 不能通过this递归调用构造方法,即不能在一个构造方法中通过this直接或间接调用该构造方法本身。 例如:
全栈程序员站长
2022/09/13
2380
2.7w字!2021 最新版!Java基础面试题/知识点总结!(上)
这篇《Java 基础知识总结》是 JavaGuide 上阅读量最高的一篇文章,由于我对其进行了重构完善并且修复了很多小问题,所以,在腾讯云社区再同步一下!
Guide哥
2021/04/25
4700
java之static关键字
static方法: 1、定义: 《java编程思想》中提到:static方法就是没有this的方法,在static方法内部不能调用非静态方法,反过来是可以的,而且可以在没有创建任何对象的情况下,仅仅通过类本身来调用static方法,这实际上正是static方法的用途 2:概念: static方法一般称作静态方法,由于静态方法不依赖于对象就可以访问,所以也就没有this,并且static修饰的方法不能调用非静态成员变量和非静态成员方法,但是非静态成员方法可以调用静态成员方法 static变量: 定
说故事的五公子
2019/09/11
4280
深入理解static关键字
static 是我们日常生活中经常用到的关键字,也是 Java 中非常重要的一个关键字,static 可以修饰变量、方法、做静态代码块、静态导包等,下面我们就来具体聊一聊这个关键字,我们先从基础开始,从基本用法入手,然后分析其原理、优化等。
程序员Leo
2023/08/02
3760
深入理解static关键字
Java基础(十):关键字static、代码块、关键字final
Java微观世界
2025/01/21
1510
Java基础(十):关键字static、代码块、关键字final
Java关键字final、static使用总结
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不能用于修饰构造方法。
用户1112962
2018/07/03
8430
相关推荐
Java50个关键字总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验