学习Java——java种各种关键字

本文介绍了Java编程语言中的几个重要关键字:transient用于标记变量在序列化时不保存其值;instanceof用于判断对象是否属于某个类或其子类;final修饰变量不可变,修饰方法不可重写,修饰类不可继承;static用于声明静态变量和方法,它们属于类而非实例,且在类加载时初始化。
摘要由CSDN通过智能技术生成

目录

transient

 instanceof

const 

 final

final变量

final 方法

static 

 静态变量

 静态方法

静态代码块

静态类


transient

在关于java的集合类的学习中,我们发现ArrayList类和Vector类都是使用数组实现的,但是在定义数组elementData这个属性时稍有不同,那就是ArrayList使用transient关键字

private transient Object[] elementData;  

protected Object[] elementData; 

那么,首先我们来看一下transient关键字的作用是什么。

Java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。这里的对象存储是指,Java的serialization提供的一种持久化对象实例的机制。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。使用情况是:当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。

简单点说,就是被transient修饰的成员变量,在序列化的时候其值会被忽略,在被反序列化后, transient 变量的值被设为初始值, 如 int 型的是 0,对象型的是 null。

 instanceof

instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。

instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。

以下实例创建了 displayObjectClass() 方法来演示 Java instanceof 关键字用法:

public static void displayObjectClass(Object o) {
  if (o instanceof Vector)
     System.out.println("对象是 java.util.Vector 类的实例");
  else if (o instanceof ArrayList)
     System.out.println("对象是 java.util.ArrayList 类的实例");
  else
    System.out.println("对象是 " + o.getClass() + " 类的实例");

const 

const是Java预留关键字,用于后期扩展用,用法跟final相似,不常用

 final

final是Java中的一个关键字,它所表示的是“这部分是无法修改的”。

使用 final 可以定义 :变量、方法、类。

final变量

如果将变量设置为final,则不能更改final变量的值(它将是常量)。

class Test{
     final String name = "Hollis";
 
}

一旦final变量被定义之后,是无法进行修改的。

final 方法

如果任何方法声明为final,则不能覆盖它。

class Parent {
    final void name() {
        System.out.println("Hollis");
    }
}

当我们定义以上类的子类的时候,无法覆盖其name方法,会编译失败。

 final类

如果把任何一个类声明为final,则不能继承它。

final class Parent {
    
}

以上类不能被继承!

static 

static表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块

 静态变量

我们用static表示变量的级别,一个类中的静态变量,不属于类的对象或者实例。因为静态变量与所有的对象实例共享,因此他们不具线程安全性。

通常,静态变量常用final关键来修饰,表示通用资源或可以被所有的对象所使用。如果静态变量未被私有化,可以用“类名.变量名”的方式来使用。

//static variable example
private static int count;
public static String str;

 静态方法

与静态变量一样,静态方法是属于类而不是实例。

一个静态方法只能使用静态变量和调用静态方法。通常静态方法通常用于想给其他的类使用而不需要创建实例。例如:Collections class(类集合)。

Java的包装类和实用类包含许多静态方法。main()方法就是Java程序入口点,是静态方法。

//static method example
public static void setCount(int count) {
    if(count &gt; 0)
    StaticExample.count = count;
}

//static util method
public static int addInts(int i, int...js){
    int sum=i;
    for(int x : js) sum+=x;
    return sum;
}

 从Java8以上版本开始也可以有接口类型的静态方法了。

静态代码块

Java的静态块是一组指令在类装载的时候在内存中由Java ClassLoader执行。

静态块常用于初始化类的静态变量。大多时候还用于在类装载时候创建静态资源。

Java不允许在静态块中使用非静态变量。一个类中可以有多个静态块,尽管这似乎没有什么用。静态块只在类装载入内存时,执行一次。

static{
    //can be used to initialize resources when class is loaded
    System.out.println(&quot;StaticExample static block&quot;);
    //can access only static variables and methods
    str=&quot;Test&quot;;
    setCount(2);
}

静态类

Java可以嵌套使用静态类,但是静态类不能用于嵌套的顶层。

静态嵌套类的使用与其他顶层类一样,嵌套只是为了便于项目打包。


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值