精华内容
下载资源
问答
  • Java中关键字

    2021-04-09 16:35:07
    Java的关键字Java关键字访问控制修饰默认访问修饰符私有访问修饰符-private公有访问修饰符-public受保护的访问修饰符-protected访问控制和继承非访问修饰符static 修饰符final关键字 Java关键字 Java 语言目前定义...

    Java关键字

    Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。

    访问控制修饰

    Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

    default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
    private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
    public : 对所有类可见。使用对象:类、接口、变量、方法
    protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
    我们可以通过以下表来说明访问权限:
    在这里插入图片描述

    默认访问修饰符

    使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。

    私有访问修饰符-private

    私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。

    公有访问修饰符-public

    被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。

    如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。

    受保护的访问修饰符-protected

    protected 需要从以下两个点来分析说明:

    子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
    子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
    protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)。

    子类能访问 protected 修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。

    访问控制和继承

    父类中声明为 public 的方法在子类中也必须为 public。
    父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
    父类中声明为 private 的方法,不能够被继承。

    非访问修饰符

    为了实现一些其他的功能,Java 也提供了许多非访问修饰符。
    static 修饰符,用来修饰类方法和类变量。

    final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

    abstract 修饰符,用来创建抽象类和抽象方法。

    synchronized 和 volatile 修饰符,主要用于线程的编程。

    static 修饰符

    static的使用:
    1.可以用来修饰常量;
    2.可以用来修饰成员变量,通过static关键字来达到全局的效果。静态变量 属于类,在内存中只有一个副本。只要静态变量所在的类被加载,这个静态类就会被分配空间,因此就可以被使用。对静态变量的引用有两种方式,分别为“类.静态变量”和“对象.静态变量”。实例变量属于对象,只有对象被创建后,实例变量才会被分配空间,才能被使用,他在内存中存在多个副本,只能用“对象.静态变量”的方式来引用。静态变量只有一个,被类所拥有,所有的对象都共享这个静态变量。
    3.可以用来修饰成员方法,static方法是属于类的方法,不需要创建对象就可以被使用,而非static方法是对象的方法,只有对象被创建出来后才可以被使用。static方法中不能使用this和super关键字,不能调用非静态方法,只能访问静态的成员变量和方法。static谁能实现单例模式,单例模式的特点是该类只有一个实例。
    4.static可以用来修饰代码块,static代码块在类中是独立与成员变量和成员函数的代码块,他不在任何一个方法体内,JVM在加载里的时候会执行static代码块,如果有多个static代码块,JVM将会按顺序来执行,static代码块经常会被用来初始化静态变量,需要注意的是static代码块只会被执行一次。
    5.static可以用来修饰内部类static内部类是指被申明为static的内部类,他可以不依赖于外部类实例对象而被实例化,而通常的内部类需要外部类实例化后才能实例化。静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态成员方法,只有内部类才能被申明为static。

    final关键字

    final表示最终的,final可以用来修饰普通方法、属性、变量、形参、常量、类、内部类。

    如果修饰普通方法,表示该方法不能被重写;

    如果修饰属性、变量、形参,表示值不能改变;

    如果修饰类,表示类不能被继承。

    属性、变量、形参、常量的名字中的存储的内容是不能改变的;

    展开全文
  • Java中this关键字的作用和用法

    万次阅读 多人点赞 2018-09-03 19:22:39
    简单总结一下Java中this关键字的作用与用法。 参考文献: Java中this关键字详解 Java this 关键字用法 java中this关键字的用法 Java this关键字 java中this关键字的作用 功能概述 this关键字主要有三个应用...

    写在前面

    简单总结一下Java中this关键字的作用与用法。

    参考文献:

    功能概述

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

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

    下面主要按照这三个基本功能进行解释。

    调用成员变量

    结合代码来说,会更加具体一些。参考下面这段代码:

    public class Student{
        String name;
        private void SetName(String name){
            this.name = name;
        }
    }

    这段代码中,创建了一个类Student,有成员变量name与成员方法SetName(String name),由于成员方法接收的形参名称与成员变量相同,都是name,所以,这里可以使用this关键字来调用本类中的成员变量。其作用可以简单的这么理解:this关键字就是调用本类中的成员变量。

    但是这样简单的理解并不准确,this其实是当前类对象的引用,通过当前这个类实例化的对象的引用来访问对象的成员变量。

    注意:

    this关键字访问类的成员变量和成员函数时不受访问权限的控制,可以访问本类中所有的成员变量和方法,包括private的成员变量和方法。也可以通过this访问本类的static成员,不过由于static成员可以通过类名直接访问,如果通过this来访问会有“The static field ××× should be accessed in a static way”的警告信息。不能在类的static成员或static块中使用this。

    调用成员方法

    可参考如下代码:

    package Test;
    
    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");
    
        }
    }

    这段代码中,首先创建了Test类,该类与之前的没什么区别,只是增加了一个成员方法thisTest(),在这个成员方法中,通过this关键字调用了之前的成员函数setName(),程序运行结果如下所示:

    setName: Yida
    setName: Jenny
    thisTest: Jenny

    调用构造方法

    构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法中通过this(paras…)来调用其他的构造方法。

    使用this来调用其他构造方法有如下几个约束:

    • 只能在构造方法中通过this来调用其他构造方法,普通方法中不能使用。
    • 不能通过this递归调用构造方法,即不能在一个构造方法中通过this直接或间接调用该构造方法本身。
    • 通过this调用其他构造方法必须放在构造方法的第一行中执行。
    • 由于super调用父类的构造函数也必须放在构造方法的第一行中执行,因此,通过this和super调用构造方法不能同时出现一个构造方法中。也不能在一个构造方法中多次调用不同的构造方法。

    以下代码是错误的,因为通过this关键字,形成了递归调用:

    //错误的示例!!!
    class test {
        test() {
            this(1);
        }
        test(int a){
            this();
        }
        tes int b) {
            this(1, 2);
        }
    }

    正确的使用如下所示:

    public class Student { //定义一个类,类的名字为student。 
        public Student() { //定义一个方法,名字与类相同故为构造方法
            this(“Hello!”);
        }
        public Student(String name) { //定义一个带形式参数的构造方法
        }
    }

    返回对象的值

    this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面student类中,那么代码代表的含义就是return student。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值,这才是this关键字最引人注意的地方。

    展开全文
  • 写在前面 简单总结一下Java中this关键字的作用与用法...Java中this关键字详解Java this 关键字用法java中this关键字的用法Java this关键字java中this关键字的作用 功能概述 this关键字主要有三个应用: this调用...

    写在前面

    简单总结一下Java中this关键字的作用与用法。

    参考文献:

    功能概述

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

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

    下面主要按照这三个基本功能进行解释。

    调用成员变量

    结合代码来说,会更加具体一些。参考下面这段代码:

    public class Student{
        String name;
        private void SetName(String name){
            this.name = name;
        }
    }
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这段代码中,创建了一个类Student,有成员变量name与成员方法SetName(String name),由于成员方法接收的形参名称与成员变量相同,都是name,所以,这里可以使用this关键字来调用本类中的成员变量。其作用可以简单的这么理解:this关键字就是调用本类中的成员变量。

    但是这样简单的理解并不准确,this其实是当前类对象的引用,通过当前这个类实例化的对象的引用来访问对象的成员变量。

    注意:

    this关键字访问类的成员变量和成员函数时不受访问权限的控制,可以访问本类中所有的成员变量和方法,包括private的成员变量和方法。也可以通过this访问本类的static成员,不过由于static成员可以通过类名直接访问,如果通过this来访问会有“The static field ××× should be accessed in a static way”的警告信息。不能在类的static成员或static块中使用this。

    调用成员方法

    可参考如下代码:

    package Test;
    

    public class ThisTest {
    String name;

    <span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setName</span>(String name) {
        <span class="hljs-keyword">this</span>.name = name;
        System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"setName: "</span> + <span class="hljs-keyword">this</span>.name);
    }
    
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">thisTest</span>(String name) {
        <span class="hljs-keyword">this</span>.setName(name);
        System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"thisTest: "</span> + <span class="hljs-keyword">this</span>.name);
    }
    
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) {
        ThisTest tt = <span class="hljs-keyword">new</span> ThisTest();
    
        tt.setName(<span class="hljs-string">"Yida"</span>);
        tt.thisTest(<span class="hljs-string">"Jenny"</span>);
    
    }
    

    }

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    这段代码中,首先创建了Test类,该类与之前的没什么区别,只是增加了一个成员方法thisTest(),在这个成员方法中,通过this关键字调用了之前的成员函数setName(),程序运行结果如下所示:

    setName: Yida
    setName: Jenny
    thisTest: Jenny
     
    • 1
    • 2
    • 3

    调用构造方法

    构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法中通过this(paras…)来调用其他的构造方法。

    使用this来调用其他构造方法有如下几个约束:

    • 只能在构造方法中通过this来调用其他构造方法,普通方法中不能使用。
    • 不能通过this递归调用构造方法,即不能在一个构造方法中通过this直接或间接调用该构造方法本身。
    • 通过this调用其他构造方法必须放在构造方法的第一行中执行。
    • 由于super调用父类的构造函数也必须放在构造方法的第一行中执行,因此,通过this和super调用构造方法不能同时出现一个构造方法中。也不能在一个构造方法中多次调用不同的构造方法。

    以下代码是错误的,因为通过this关键字,形成了递归调用:

    //错误的示例!!!
    class test {
       
        test() {
            this(1);
        }
        test(int a){
            this();
        }
        tes int b) {
            this(1, 2);
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    正确的使用如下所示:

    public class Student { //定义一个类,类的名字为student。 
        public Student() { //定义一个方法,名字与类相同故为构造方法
            this(“Hello!”);
        }
        public Student(String name) { //定义一个带形式参数的构造方法
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    返回对象的值

    this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面student类中,那么代码代表的含义就是return student。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值,这才是this关键字最引人注意的地方。

    展开全文
  • Java中native关键字

    千次阅读 2017-07-05 16:20:38
    Java中的native关键字

    今日在hibernate源代码中遇到了native关键词,甚是陌生,就查了点资料,对native是什么东西有了那么一点了解,并做一小记。

    native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。

    JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(java Software Development Kit,SDK)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用Java代码。

    不过,对Java外部的调用通常不能移植到其他平台,在applet中还可能引发安全异常。实现本地代码将使您的Java应用程序无法通过100%纯Java测试。但是,如果必须执行本地调用,则要考虑几个准则:

    1.将您的所有本地方法都封装到一个类中,这个类调用单个的DLL。对每一种目标操作系统平台,都可以用特定于适当平台的版本的DLL。这样可以将本地代码的影响减少到最小,并有助于将以后所需要的移植问题考虑在内。

    2.本地方法尽量简单。尽量使您的本地方法对第三方(包括Microsoft)运行时DLL的依赖减少到最小。使您的本地方法尽量独立,以将加载您的DLL和应用程序所需的开销减少到最小。如果需要运行时DLL,必须随应用程序一起提供。

    JNI的书写步骤如下:

    a.编写带有native声明的方法的Java类

    b.使用javac命令编译编写的Java类

    c.使用java -jni ****来生成后缀名为.h的头文件

    d.使用其他语言(C、C++)实现本地方法

    e.将本地方法编写的文件生成动态链接库

    以下是一个在Java中调用本地C程序的简单的例子:

    a.编写HelloWorld.java类

    class HelloWorld{

    public native void hello();

    static{
    System.loadLibrary(“hello”);
    }

    public static void main(String[] args){

    new HelloWorld().hello();
    }

    }

    b.编译

    javac HelloWorld.java

    c.生成.h文件

    javah -jni HelloWorld

    生成内容如下:

    /* DO NOT EDIT THIS FILE - it is machine generated */

    #include <jni.h>
    /* Header for class HelloWorld */

    #ifndef _Included_HelloWorld
    #define _Included_HelloWorld
    #ifdef __cplusplus
    extern “C” {
    #endif
    /*
    * Class: HelloWorld
    * Method: hello
    * Signature: ()V
    */
    JNIEXPORT void JNICALL Java_HelloWorld_hello
    (JNIEnv *, jobject);

    #ifdef __cplusplus
    }
    #endif
    #endif

    第一个参数是调用JNI方法时使用的JNI Environment指针。第二个参数是指向在此Java代码中实例化的Java对象HelloWorld的一个句柄。其他参数是方法本身的参数

    d.c实现

    #include <jni.h>
    #include “HelloWorld.h”
    #include <stdio.h>
    JNIEXPORT void JNICALL Java_HelloWorld_hello(JNIEnv *env,jobject obj){
    printf(“Hello World!\n”);
    return;
    }

    其中,第一行是将jni.h文件引入(在%JAVA_HOME%\include目录下),里边有JNIEnv和jobject的定义。

    e.编译c实现

    这里以在Windows中为例,需要生成dll文件。在保存HelloWorldImpl.c文件夹下面,使用VC的编译器cl成。

    cl -I%java_home%\include -I%java_home%\include\win32 -LD HelloWorldImp.c -Fehello.dll

    注意:生成的dll文件名在选项-Fe后面配置,这里是hello,因为在HelloWorld.java文件中我们loadLibary的时候使用的名字是hello。当然这里修改之后那里也需要修改。另外需要将-I%java_home%\include -I%java_home%\include\win32参数加上,因为在第四步里面编写本地方法的时候引入了jni.h文件。

    6) 运行程序

    java HelloWorld就ok了!

    例子是照着别人的网页做的,其他还有很多东西,可以看资源连接。

    资源:

    IBM网站的一篇文章:http://www.ibm.com/developerworks/cn/java/jnimthds/

    china itpub一篇文章:http://java.chinaitlab.com/JDK/36677.html

     http://java.chinaitlab.com/JDK/36678.html

    J2SE5的Java Native Interface Specification

     http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/jniTOC.html

    展开全文
  • java中关键字

    2020-03-02 14:36:10
    java中关键字如下图所示: 访问控制 private protected public 类、方法和变量修饰符 abstract class extends final implements interface native new ...
  • Java中Java中volatile关键字十分重要    本文全面 &amp; 详细解析volatile关键字,希望你们会喜欢    目录    1. 定义    Java 的1个关键字 / 修饰符    2. 作用    保证 被 volatile修饰的...
  • Java中常用关键字

    千次阅读 2018-10-28 13:30:39
    Java中常用关键字包括:static、extends、super、final、abstract、interface、implements。下面分别讲述这几个关键字: static关键字: 具体解析链接:https://blog.csdn.net/TSY_1222/article/details/83150782 ...
  • java中final关键字总结

    2020-03-19 15:25:56
    关于java中final关键字 以下是本人在阅读java编程思想这本书总结的一些知识 final通常含义是指“不可改变的”,使用此关键字的理由有两种:设计和效率。为了防止误用final关键字,应该从以下几个方面去了解final的...
  • Java中this关键字和static关键字

    千次阅读 多人点赞 2018-10-20 17:59:37
    文章目录1 this关键字1.1 this表示本类属性1.2 this调用本类方法1.2.1 this调用普通方法1.2.2 this调用构造方法1.2.3 this表示当前对象2 static关键字2.1 static属性(类属性)2.2 static方法(类方法) 1 this...
  • JAVA中关键字

    2018-11-22 23:48:35
    当你在JAVA编辑器写入了关键字时,它会变颜色,关键字表示一种数据类型或者表示程序的结构,不能用作变量名,方法名,类名,参数名,包名。 二.JAVA中有哪些关键字?都代表着什么呢? JAVA中一共有50个关键字,...
  • java中关键字以及用法

    千次阅读 2018-08-12 22:01:32
    java关键字 Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能...
  • Java中native关键字的简单使用 文章目录Java中native关键字的简单使用1、native关键字简介2、native关键字使用的一些小建议3、native使用的一个例子 1、native关键字简介 原则上来说,100%纯的Java代码是非常好的,...
  • 刷牛客网选择题时,遇到判定哪些关键字是java的关键字。一时间有点蒙,赶紧看oracle对其的定义。...java关键字 以下是java编程语言当中关键字的一个列表。在你的程序当中,你不能使用下面任何一
  • java中所有关键字

    千次阅读 2018-04-03 16:06:56
    零、关键字一览:abstract continue for new switchassert*** default goto* package synchronizedboolean do if private thisbreak double implements protected throwbyte else import public ...
  • java中this关键字必须放在非静态方法里面,this关键字代表自身,在程序主要的用途有以下几个方面:1、引用成员变量;2、在自身构造方法内部引用其它构造方法;3、代表自身类的对象;4、引用成员方法;下面我们来...
  • 文章目录JAVA protected关键字详解实例1实例2实例3实例4实例5实例6实例7 先确定protected来自类A(有可能是基类,也有可能是object类,也有可能就是自己这个类),确定的时候注意最后一次被重写是什么时候,然后...
  • *关于java中关键字: this * 1.this是一个引用,this 是一个变量,this变量保存了内存地址 * 指向了它本身,this储存在JVM推内存java对象内部 * * * 2.每一个java对象,每一个对象就有一个this. * **...
  • Java中关键字含义以及介绍

    千次阅读 2018-11-19 14:52:23
    Java关键字是有特别意义的标识符。用来表示一种数据类型,或者表示程序的结构等。 Java关键字不能用作变量名、方法名、类名、包名和参数。 以下是Java的关键字以及关键字含义: 序号 关键字 含义和介绍 1...
  • java中this关键字 今天看到面向对象 this 关键字的地方 在面向对象,定义一个类,访问他的私有成员时,可以使用getter和setter这两个成员方法,而使用setter时输入变量时,为防止变量重名,需要通过重新定义...
  • java中final关键字解析

    2018-02-27 15:59:55
    java关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。...
  • java中volatile关键字

    千次阅读 2015-04-17 14:10:35
    同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized 修饰的方法 或者 代码块。 volatile 用volatile修饰的...
  • 以下Java中的50个关键字 default assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 242,263
精华内容 96,905
关键字:

以下不是java中有效的关键字

java 订阅