Javase杂谈(一)

1、Java语言的环境搭建须知

首先,我们要明确两个专用名词:JRE和JDK

什么是JRE?

java运行环境(Java Runtime Environment),包括JVM和Java程序所需的核心类库,如果要运行一个java程序,计算机中只需要安装JRE就OVER了

什么是JDK?

java开发工具包(Java Development Kit),JDK是提供给JAVA开发人员使用的,其中包含了java的开发工具,也包含JRE。


所以,当我们安装了JDK,就不用再单独安装JRE了。
简而言之:使用JDK开发完成的java程序,交给JRE去运行。

2、关键字

java语言中的关键字主要有以下几类:

参考java关键字及其作用 - 路迢迢 - 博客园

用于定义访问权限修饰符的关键字:
private(私有模式)  protected(保护模式)  public(公共模式


用于定义类,函数,变量修饰符的关键字:
abstract (声明抽象)final(最终、不可改变) static (静态)synchronized(线程、同步


用于定义类与类之间关系的关键字:
extends(继承、扩展) implements(实现

一个类只能扩展一个其他类。但一个类可以实现多个接口。


用于定义建立实例及引用实例,判断实例的关键字:
new ( 新,创建)this(指向当前实例对象的引用)                                               

super(表明当前对象的父类型的引用或者父类型的构造方法)     

instanceof(用来测试一个对象是否是指定类型的实例对象


用于异常处理的关键字:
try catch finally throw throws


用于包的关键字:
package import


其他修饰符关键字:
native strictfp transient volatile assert

   (1)private关键字:

         用于修饰成员(成员变量和成啊元函数);

    被私有化的成员只能在本类中有效;

         private:只为类本身提供。是一种封装的体现。

常用之一:

  将成员变量私有化,对外提供对应的set,get方法对其进行访问。提高对数据访问的安全性;(比如:定义Peron的age时无法控制输入是否合理)

 public:异地百家亲   protected:异地父母亲  default:同乡百家亲 private:同乡家族亲

  (2)abstract、final关键字

    abstract修饰类

abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。

package cn.hz;

/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public abstract class Person {
   private String name;  //属性:姓名

   //非抽象方法
   public void show(){
       System.out.println("人的信息"+name);
  }
}

注意:abstract修饰符在修饰类时必须放在类名前。

    abstract修饰方法

abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖),如抽象方法在抽象类中的使用代码如下:

package cn.hz;

/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public abstract class Person {
   private String name;  //属性:姓名

   //非抽象方法
   public void show(){
       System.out.println("人的信息"+name);
  }
   
   //抽象方法
   public abstract void eat();
}

注意:在抽象类中的抽象方法的abstract是不能省略的,但是在接口中的抽象方法abstract是可以省略的。

        接口中的方法只能是抽象方法,所以我们在实际编写接口时会直接将接口处和方法处的abstract省略

  

小结:

  • 一个类如果是抽象类,可以含有抽象方法也可以含有非抽象方法,但是如果一个类中含有抽象方法,则该类一定是抽象类。

  • 抽象方法可以位于接口和抽象类中,但是需要被非抽象子类或其实现类实现

    final修饰类

当final用于修饰一个类时,该类成为最终类,无法被继承,代码如下:

package cn.hz;

/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public final class Person {
   private String name;  //属性:姓名
   //非抽象方法
   public void show(){
       System.out.println("人的信息"+name);
  }
}

该类不允许被继承,其他同普通类使用一致,在java中如String类,Integer类等类都是被final修饰的,不允许继承,大家使用时一定要注意。

    final修饰方法

被final修饰的方法一定是非抽象方法,该方法不允许被重写,但是该方法可以被继承

package cn.hz;

/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public class Person {
   private String name;  //属性:姓名
   //该方法不允许被重写
   public final void show(){
       System.out.println("人的信息"+name);
  }
}

注意:final修饰方法和类互不影响。

    final修饰常量

fianl修饰一个变量时,则该变量成为常量,后续使用中不允许再做改变,并且常量需要在定义时直接赋值,代码如下:

package cn.hz;

/**
* @author hz
* @version 1.0
*定义一个常量
*/
public class Person {
   public  final String NAME="无名氏";  //属性:姓名
}

常量命名一般为全部大写,在实际开发中如圆周率PI一般定义为常量。

小结:

  • 被final修饰的类不能被继承,被final修饰的方法不能被重写,被final修饰的变量为常量不能再改变。

   (3)static,synchronized 关键字

static 静态

static 关键字可以应用于内部类(在另一个类中定义的类)、方法或字段(类的成员变量)。 

通常,static 关键字意味着应用它的实体在声明该实体的类的任何特定实例外部可用。

static(内部)类可以被其他类实例化和引用(即使它是顶级类)。在上面的示例中,另一个类中的代码可以实例化 MyStaticClass 类,方法是用包含它的类名来限定其名称,如 MyClass.MyStaticClass。 

static 字段(类的成员变量)在类的所有实例中只存在一次。 

可以从类的外部调用 static 方法,而不用首先实例化该类。这样的引用始终包括类名作为方法调用的限定符。

模式:public final static <type> varName = <value>; 通常用于声明可以在类的外部使用的类常量。在引用这样的类常量时需要用类名加以限定。在上面的示例中,另一个类可以用 MyClass.MAX_OBJECTS 形式来引用 MAX_OBJECTS 常量。


synchronized线程、同步

synchronized 关键字可以应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护。 

synchronized 关键字可防止代码的关键代码段一次被多个线程执行。 

如果应用于静态方法,那么,当该方法一次由一个线程执行时,整个类将被锁定。 

如果应用于实例方法,那么,当该方法一次由一个线程访问时,该实例将被锁定。 

如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。

  (4)new,this,super关键字

new 新,创建

new 关键字用于创建类的新实例。 

new 关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。 

参数集合必须与类的构造方法的签名匹配。 

= 左侧的变量的类型必须与要实例化的类或接口具有赋值兼容关系。

this关键字用于引用当前实例

public class MyClass{
    int number;
    public MyClass(intnumber){
        this.number=number;
    }
}

当引用可能不明确时,可以使用this关键字来引用当前的实例。

在上面的-示例-中,构造方法参数number与类的成员变量同名。this.number明确表示MyClass的该实例的number成员变量。

super关键字用于引用使用该关键字的类的超类

public class MyClass{
    public MyClass(Stringarg){
        super(arg);
    }
    public String myStringMethod(){
        return super.other String Method();
    }
}

作为独立语句出现的super表示调用超类的构造方法。

super.<methodName>()表示调用超类的方法。只有在如下情况中才需要采用这种用法:要调用在该类中被重写的方法,以便指定应当调用在超类中的该方法。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撩得Android一次心动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值