java中的关键字有以下几个,他们不能作任何其它的用途。 发现没,java中的关键字全是小写,java是严格区分大小写的。

abstract  default  null  synchronized  boolean  do
 if  package  this  break  double  implements
 private  threadsafe  byte  else  import  protected  throw  extends  instanceof   

case  false  int  return  true  catch  final  interface  short  try  char  finally  long  static  void  class  float  native  super  while  for  new  switch  continue  public
 transient



static用法:static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static
成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。

注意了:静态成员不能访问非静态成员。因为类成员是属于类的,类成员的作用域比实例成员的作用域更大,完全可能出现类成员已经初始化完成了,但是实例成员还不曾初始化的情况,如果允许类成员访问实例成员将会引起大量错误。

  1. public class Linkin {
  2. public static void test(){
  3. System.out.println("梦想终究还是要有的,万一实现了呢。。。");
  4. }
  5. public static void main(String[] args) {
  6. Linkin linkin = null;
  7. //The static method test() from the type Linkin should be accessed in a static way
  8. //这里eclipse会自动提示,null对象也可以访问它所属的类成员。我们应该尽量绕开这个误区,类成员就用类名作为主调来访问。
  9. linkin.test();
  10. }
  11.  
  12. }

this用法:this表示当前对象。当前对象 : 当前正在调用实例成员的对象。换言之:谁调用了方法,谁就是当前对象

1,方法间的相互调用。


2,this.字段,当全局变量和局部变量重名是,this表示这个全局变量,其实也就是那个对象。


3,构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。不可以在构造器以外的任何方法里面调用构造器,这个一般不会出现的,而且在一个构造器中调用另外一个构造器,只能调用一次


注意了:this不能用在static修饰的方法里和static修饰的代码块里。


super用法:表示父类对象的默认引用

1,如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法。


2,使用super调用父类方法


3,使用super调用父类的构造方法


注意了:this不能出现在static修饰的方法中,super也一样不能出现在static修饰的方法中。


this和super对比:注意的是使用super()和this()在同一个构造方法中是不可能同时显示出现的。


No.

区别点

this

super

1

使用

调用本类中的字段或方法

从子类调用父类中的字段或方法

2

构造

可以调用本类构造方法,且有一个构造方法要作为出口

从子类调用父类的构造方法,不管子类如何安排最终一定会去调用,默认调用的是父类中的无参构造方法

3

要求

调用自身构造方法时放在构造方法首行

调用父类构造方法时放在子类构造方法首行

4

特殊

表示当前对象

表示父类对象

final用法:
final可以修饰类,方法,变量。

final修饰类不可以被继承,但是可以继承其他类。  

final修饰的方法不可以被覆盖,但可以覆盖父类方法。

final修饰的变量称为常量,这些变量只能赋值一次。内部类在局部时,只可以访问被final修饰的局部变量。 

final修饰的引用类型变量,表示该变量的引用不能变,而不是该变量的值不能变。比如说数组或者对象。





通常规范中:常量名称所有字母大写,若有多个单词组成,单词间使用下划线连接。

public static final修饰的常量称为全局常量;

public static final double PI = 3.14159265358979323846;

public static final String APP_SEPARATOR = "/"; 

  • 可执行"宏替换"的final变量:

对于一个final变量来讲:不管他是类field,实例field,还是局部变量,只要满足下面3个条件,这个变量就不再是一个变量,而是相当于一个直接量。

1,使用final修饰符修饰

2,在定义该final变量时指定了初始值

3,该初始值可以在编译时就去确定下来

  • 不可变类:

不可变类的意思就是创建该类的实例后,该实例的属性是不能改变的。java提供的8种包装类和String都是不可变类,当创建他们的实例后,其实例的属性是不能改变的。





成员变量是类初始化或者对象初始化而初始化的。当类初始化时,系统会为该类的属性分配内存,并分配默认值;当创建对象时,系统会为该对象的属性分配内存,并分配默认值。也就是说,当执行静态初始化块时可以对类属性赋初始化值,当执行普通初始化块时,构造器时可以对实例属性赋初始值。因此,成员变量的初始值可以在定义该变量时指定默认值,也可以在初始化块或者构造器中指定初始值。对于final修饰的成员变量来讲,一旦有了初始值,就不能被重新赋值,如果既没有在定义成员变量时指定初始值,也没有在初始化中,构造器中为成员变量指定初始值,那么这些变量的值将一直是系统分配的默认值,那么这些成员变量就完全失去了存在的意义。

所以呢?特别注意了:java语法规定,final修饰的成员变量必须由程序员显式指定初始值。

  1. public class Test08 {
  2. final int a;
  3. final int b;
  4. final int c = 1;
  5. //The blank final field c may not have been initialized
  6. //既没有指定默认值,也没有在初始化块或者构造器中指定初始值,编译报错
  7. //final int d;
  8.  
  9. public Test08(){
  10. //系统不会对final成员属性进行默认的初始化,这里final成员a还没有值,直接访问编译报错
  11. //System.out.println(a);
  12. a=1;
  13. //final变量c已经赋值过一次了,这里重新赋值,编译报错
  14. //c=2;
  15. }
  16.  
  17. {
  18. b = 2;
  19. }
  20.  
  21. public void test(){
  22. //普通方法不能为final修饰的成员变量赋值或者指定初始化
  23. //a = 4;
  24. }
  25.  
  26. }
  1. public class Linkin {
  2. public static void main(String[] args) {
  3. final String str = "LinkinPark";
  4. final String huhu = "binger"+1314;
  5. final String str1 = str+huhu;
  6. //普通的变量,不会执行"宏替换"
  7. String str2 = "LinkinPark";
  8. String str3 = str2+huhu;
  9. //true
  10. System.out.println(huhu == "binger1314");
  11. //true
  12. System.out.println(str1 == "LinkinParkbinger1314");
  13. //false
  14. System.out.println(str3 == "LinkinParkbinger1314");
  15. }
  16.  
  17. }



break,continue,return 3个关键字用法:

break:用于结束一个循环,跳出循环体。注意了是完全终止循环本身。

continue:终止本次循环,接着下一次的循环。注意了这里并没有完全终止循环本身。

return:不是专门用来结束循环的,他的功能是结束一个方法。不管这个return处于几层循环都直接结束这个方法。



  1. public class Linkin {
  2. public static void main(String[] args) {
  3. for (int a = 0; a <= 5; a++) {
  4. System.out.println(a);
  5. if (a == 2) {
  6. System.out.println("这里调用了break...");
  7. break;
  8. }
  9. }
  10. System.out.println("调用了上面的break的话,只是单纯的跳出上面那个循环,这行字会打印出来...");
  11. for(int a = 0; a <= 5; a++){
  12. System.out.println(a);
  13. if (a == 2) {
  14. System.out.println("这里调用了continue...");
  15. continue;
  16. }
  17. }
  18. System.out.println("调用了上面的continue的话,只是单纯的跳出上面那个循环,这行字会打印出来...");
  19. for(int a = 0; a <= 5; a++){
  20. System.out.println(a);
  21. if (a == 2) {
  22. System.out.println("这里调用了return...");
  23. return;
  24. }
  25. }
  26. System.out.println("调用了上面的return的话,这个方法就直接结束了,这行字不会打印出来...");
  27. }
  28.  
  29. }




值得注意的是,return还用于返回非void方法的返回值。这个很简单,就不做多的墨迹了。break和continue不仅可以结束其所在的循环,还可以结束其外层循环。



  1. public class Linkin {
  2. public static void main(String[] args) {
  3. outer: for (int a = 0; a <= 3; a++) {
  4. for (int b = 0; b <= 3; b++) {
  5. System.out.print("a=" + a + ";b=" + b + " ");
  6. if (b == 1) {
  7. break outer;
  8. }
  9. }
  10. }
  11. System.out.println("=================");
  12. outer: for (int a = 0; a <= 3; a++) {
  13. for (int b = 0; b <= 3; b++) {
  14. System.out.print("a=" + a + ";b=" + b +" ");
  15. if (b == 1) {
  16. continue outer;
  17. }
  18. }
  19. }
  20. }
  21. }












































linkin大话面向对象--java关键字的更多相关文章

  1. linkin大话面向对象--多态

    java引用变量有2个类型,一个是编译时类型,一个是运行时类型: 编译时类型:声明的类型,把它看做是什么东西 运行时类型:真正的类型,实际上指的是什么东西 如果编译时类型和运行时类型不同,就出现多态. ...

  2. linkin大话面向对象--类和对象

    我们每天在撸码,那么我们在敲什么东西呢?明显的我们在写类,写一个类,写一个接口,写某个接口里面写一些属性,在某个类里面写一个方法,然后以一个对象调用方法,对于j2ee来讲的话,可能还会写一些jsp,静 ...

  3. linkin大话面向对象--闭包和回调

      先来理解2个概念:闭包和回调   什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信 ...

  4. linkin大话面向对象--继承

    [修饰符] class SubClass extends SuperClass    按照这种关系,我们把SuperClass类称为父类或基类,把SubClass称为子类或派生类或拓展类.extend ...

  5. linkin大话面向对象--包和导入

    我们现在的代码都扔在一个文件夹里面,比如以后我们做项目,是不是有可能有非常非常多的代码,那我就希望把不同功能和模块的类方便管理,放到不同的文件夹下,引出包概念. 什么是包,就一个文件目录,为了处理重名 ...

  6. linkin大话面向对象--GC和jar包

    GC java的垃圾回机制是java语言的重要机制之一.当程序创建对象,数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区中.当这块内存不再被任何变量引用时,这块内存就 ...

  7. linkin大话面向对象--内部类

    内部类说白了就是类中有类 内部类:嵌套类 外部类:宿主类 内部类主要有以下作用:记住了3个字:多继承... 1,内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类. ...

  8. linkin大话面向对象--枚举

    枚举类(enum) 其实我们使用到枚举的地方还是很多的,其实我们可以完全人工的来实现枚举的功能.比如说我现在手里的项目我就是自己实现的枚举,说白了,枚举就是一个类的多例模式. 1,使用enum声明,默 ...

  9. linkin大话面向对象--抽象类

    abstract [非private访问修饰符] 返回值类型 方法名称(参数列表); 当编写一个类时,我们往往会为该类定义一些方法,这些方法时用来描述该类的行为方式,那么这些方法都有具体的方法体. 但 ...

随机推荐

  1. 【fhq Treap】bzoj1500(听说此题多码上几遍就能不惧任何平衡树题)

    1500: [NOI2005]维修数列 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 15112  Solved: 4996[Submit][Statu ...

  2. COM学习(三)——COM的跨语言

    COM是基于二进制的组件模块,从设计之初就以支持所有语言作为它的一个目标,这篇文章主要探讨COM的跨语言部分. idl文件 一般COM接口的实现肯定是以某一具体语言来实现的,比如说使用VC++语言,这 ...

  3. AI时代:推荐引擎正在塑造人类

    We shape our tools and afterwards our tools shape us. ------Marshall McLuhan 麦克卢汉说:"我们塑造了工具,反过来 ...

  4. 浏览器history操作实现一些功能

    返回拦截 功能:从广告进入到落地页后,给history增加一个页面,拦截返回动作 主要用到的是h5中的history对象,使用了pushState,和replaceState来操作. 并且加入了一些条 ...

  5. webpack基础打包安装分享

    一.创建webpack-first文件夹作为站点,创建app文件夹存放js原始模块(main.js 和 Greeter.js) 创建 public文件夹存放index.html和打包后的bundle. ...

  6. True 和 False

    True 和 False是Python中的关键字. 'True' 和 'False'是Python中的字符串. true 和 false 是Python中的变量名,需要提前定义.

  7. 使用神经网络来拟合函数y = x^3 +b

    我们使用一个三层的小网络来,模拟函数y = x^3+b函数 import tensorflow as tf import numpy as np import matplotlib.pyplot as ...

  8. 通俗的解释JAVA wait/notify机制

    生活中,我们常遇到需要等待的场景,例如去银行办事,在没轮到自己之前需要一直等待,但是如果需要自己每隔几秒钟就去柜台前看看状况,那肯定是种非常低效和令人恼火的体验.而实际的情况是,接待员会让您拿个号,说 ...

  9. 从“思考”的角度来看如何成为一名优质的Java架构师

    导读: 架构师应不应该写代码 为什么别人的系统总是那么烂 成为架构师最困难的门槛是什么? 如何更高效的学习? 1.架构师应不应该写代码 合格的程序员对于明确分配的任务会完成的很好,但是大部分情况下&q ...

  10. 【JavaScript 实现当前动态时间】

    实现一个简单动态的当前时间 <!doctype html> <html lang="en"> <head> <meta charset=& ...