java中的关键字以及规范

来源:互联网 发布:aim 霹雳 知乎 编辑:程序博客网 时间:2024/05/21 19:41

Static关键字

由Static修饰的变量、常量和方法被称作静态方法、静态变量、静态常量。

有时在处理问题时,会需要两个类在同一内存区域共享一个数据。不必要再设置两个变量,这时就可以将这个常量设置为静态的。

Static修饰符表示静态的,可修饰字段.方法.内部类,其修饰的成员属于类,也就是说static的资源属于类级别,而不是对象级别.可以在本类或其他类使用类名和“.”运算符调用静态成员。

Static的真正作用:用来区别字段,方法,内部类,初始化代码块是属于对象还是属于类本身
◆Static修饰方法

用类名.方法名可以直接调用该方法不用Static修饰的方法

◆Static修饰属性

由类创建的对象,都共用这一属性类变量随类变量的加载而加载,即使此类还未new过对象,这个类变量也存在,而且仅一份.

◆不用Static修饰的方法

与方法有关

◆不用Static修饰的属性

必须实例化一个类的对象使用对象.方法才可以调用如果使用类名.方法名调用会产生错误:无法从静态上下文中引用非静态方法

■类成员

使用static修饰的成员在静态方法中,只能调用static成员(不能使用类.非static属性来调用属性)(无法从静态上下文中引用非静态方法)

■实例成员(对象实例化)

没有使用static修饰的成员非静态方法中,可以访问静态成员,也可以访问实例成员.(可以直接使用类.属性名来调用属性)

Example

public class TestStatic {    //属性     static int age=10;  //属于类  在方法区                        //当前类的对象,也可以访问静态成员          int weigh=100;  //属于对象    //类成员    static void method(){    }    public static void main(String[] args) {        TestStatic s=new TestStatic();        //使用类名.属性调用        System.out.println(TestStatic.age);        //直接调用static修饰的变量        System.out.println(age);        //使用对象.属性来赋值        s.age=11;        System.out.println(age);        //作用类名.属性来赋值        TestStatic.age=100000;        System.out.println(age);        //一般情况下,我们可以通过类名可以直接访问到类成员 类名.成员        s.method();        //类不能访问对象成员    }}

This关键字

表示当前对象.
this主要存在于两个位置:
构造器中: 就表示当前创建的对象.
方法中: 哪一个对象调用this所在的方法,那么此时this就表示哪一个对象.

当一个对象创建之后,JVM会分配一个引用自身的引用:this.

this内存分配

这里写图片描述

this的使用归纳

使用this:① 解决成员变量和参数(局部变量)之间的二义性,必须使用;② 同类中实例方法间互调(此时可以省略this,但是不建议省略)。③ 将this作为参数传递给另一个方法;④ 将this作为方法的返回值(链式方法编程);⑤ 构造器重载的互调,this([参数])必须写在构造方法第一行;⑥ static不能和this一起使用;              当字节码被加载进JVM,static成员以及存在了.             但是此时对象还没有创建,没有对象,就没有this.

Practice NewBook

public class NewBook {    private String title;           //定义书名    private String author;          //定义作者    private double price;           //定义价格    //利用构造方法初始化域    public NewBook(String title,String author,double price){        this.title=title;        this.author=author;        this.price=price;    }    public String getTitle(){   //获得书名        return title;    }    public String getAuthor(){  //获得作者        return author;    }    public double getPrice(){   //获得价格        return price;       }}

NewTest

public class NewTest {    public static void main(String[] args) {        //创建对象        NewBook book=new NewBook("Java从入门到精通", "明日科技", 59.2);        //输出书名        System.out.println("书名:"+book.getTitle());        //输出作者        System.out.println("作者:"+book.getAuthor());        //输出价格        System.out.println("价格:"+book.getPrice());    }}

JavaBean规范

JavaBean 是一种JAVA语言写成的可重用组件(类).
必须遵循一定的规范:
1):类必须使用public修饰.
2):必须保证有公共无参数构造器,即使手动提供了带参数的构造器,也得提供无参数构造器..
3):包含了属性的操作手段(给属性赋值,获取属性值).

getter,setter方法

字段: private  String  name;getter方法: 仅仅用于获取某一个字段存储的值.//去掉get,把首字母小写,得到name1.此时name1才是属性.public String getName1(){   return name;//返回name字段存储的值}如果操作的字段是boolean类型的,此时不应该叫做getter方法,而是is方法,把getName 变成isName.setter方法:仅仅用于给某一个字段设置需要存储的值.public void setName1(String  n){    name = n;//把传过来的n参数的值,存储到name字段中}每一个字段都得提供一对getter/setter.

Demo MoBike

public class MoBike {    private String Color;    private int speed;    private int size;    private boolean money;    private double wheel;    /*     * 设置颜色     * 获得颜色     */    public void setColor(String color1){        Color=color1;    }    public String getColor(){        return Color;    }    /*     * 设置speed     * 获得speed      */    public void setSpeed(int speed1){        if(speed1>40){            System.out.println("速度过高请减速");            return ;        }        speed=speed1;    }    public int getSpeed(){        return speed;    }    /*     * 设置大小     * 获得大小     */    public void setSize(int size1){        size=size1;    }    public int getSize(){        return size;    }    /*     * 设置是否有钱     * 获得是否有钱     */    public void setMoney(boolean boolean1){        money=boolean1;    }    public boolean isMoney(){        return money;    }    /*     * 设置轮子数     * 获得轮子数     */    public void setWheel(double x){        wheel=x;    }    public double getWheel(){        return wheel;    }}

Demo MoBikeTest

public class MoBikeTest {    public static void main(String[] args) {        MoBike M=new MoBike();        M.setColor("blue");        System.out.println(M.getColor());        M.setSpeed(60);        System.out.println(M.getSpeed());        M.setSize(50);        System.out.println(M.getSize());        M.setMoney(true);        System.out.println(M.isMoney());        M.setWheel(1.232);        System.out.println(M.getWheel());    }}

final

final本身的含义是“最终的,不可改变的“,它可以修饰非抽象类,非抽象方法和变量。
注意:构造方法不能使用final修饰,因为构造方法不能被继承,肯定是最的。
abstract抽象类也不能被final修饰,因为abstract是要被继承的。
final修饰符与其他修饰符之间是没顺序的。

final修饰类的特点

表示最终的类,该类不再有子类只要满足以下条件就可以把一个子类设计成final类:    1,某类不是专门为继承而设计。    2,出于安全考虑,类的实现细节不许改动不准修改源代码。    3,确信该类不会再被拓展。

final修饰方法的特点

使用final修饰的方法,如果该类被继承,这个方法是能被其子类调用的,但是不能被重写。

final修饰的变量

用final修饰的字段,只能被赋值一次。

基本类型变量

使用final修饰的基本数据类型的值只能被赋值一次,并且是在声明变量时赋值。

引用类型变量

使用final修饰的引用数据类型的变量,其引用地址只能被赋值一次。但是其对象中属性的值还是可以被修改的。

package

关键字:package  ,专门用来给当前Java文件设置包名.语法格式: package  包名.子包名.子子包; 注意:必须把该语句放在Java文件中第一行代码(所有代码之前).

命名的规范

◎变量名的规范

在java中既要遵守变量的命名法则(合法法则),还要遵守约定俗成的规范(驼峰是命名法)

Java变量的基本命名法则:        1、以下划线、字母、美元符开头。        2、后面跟下划线、字母、美元符以及数字。        3、 没有长度限制(但也不能太长!)。        4、对大小写敏感(意思是大小写代表不同含义)Java驼峰式命名法:         1、变量名必须为有意义的单词         2、变量名如果只有一个单词,则小写         3、如果有2个以及多个单词,则从第二个单词开始首字母大写 Demo $ad    abc       ajhs01 play   $play01   playGame

◎方法名的规范

方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。示例:run();   runFast();   getBackground();

◎类名的规范

命名规则:类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URLHTML)示例:class Raster;class ImageSprite;

◎包名的规范

自定义的包名,不能以java.打头,因为Java的安全机制会检查.      1>:包名必须遵循标识符规范/全部小写.      2>:企业开发中,包名采用公司域名倒写.                   比如:package  com.hnqy;         格式: package   域名倒写.模块名.组件名;

◎接口(Interfaces)规范。

命名规则:大小写规则与类名相似示例:interface RasterDelegate;interface Storing;

◎实例变量(Instance Variables)规范

大小写规则和变量名相似,除了前面需要一个下划线。示例:int _employeeId;String _name;Customer _customer;

◎常量(Constants)规范

在JAVA代码中,无论什么时候,均提倡应用常量取代数字、固定字符串。也就是 说,程序中除01以外,尽量不应该出现其他数字。常量可以集中在程序开始部分定义或者更宽的作用域内,名字应该都使用大写字母,并且指出该常量完整含 义。常量的声明,应该全部大写,单词间用下划线隔开。示例:static final int MIN_WIDTH = 4;static final int MAX_WIDTH = 999;static final int GET_THE_CPU = 1;
原创粉丝点击