【Java学习篇】(四) 类语法细节

前面介绍了基本类型语法,下面走进Java的世界,认识

本章主要介绍Java的一些基础语法,如类与对象的概念,以及语法细节。

 

一、类与对象

      1.创建类 

        类就像是设计图,对象是类的一个实例(Instance),我们必须先定义类(Class)产生对象(Object),才能供我们编写程序中使用。

   

        类定义关键词class。比如定义一个衣服类:class Clothes;

        新建一个对象:new Clothes();

        要给对象命名:Clothes c;术语称:声明参考名称(Reference Name)或参考变量(Reference Variable)

          

        这个名字要和新建的对象进行绑定。术语称:将名称参考(Refer)至新建对象,用“=”指定。

        new Clothes()= Clothes c;

        类拥有自己的变量,也叫作域(Field)成员、数据成员。比如衣服的颜色和尺码。

扫描二维码关注公众号,回复: 5523762 查看本文章
class Clothes{
    String color;
    char size;

}

        我们创建好对象后可以用 对象名.数据成员的格式指定值。 比如c.color="red";       

      2.对象指定与相等性

              区分一下=和==的不同。(底层内存的实际运作没有不同)

              对于基本类型,=是值复制;==是比较两个变量的值。

              对于类类型的对象,=是指定参考名称参考某个对象;==是比较两个参考名称是否参考同一个对象

              判断对象的值是否相同可以用equals()方法

二、类语法细节

                1.权限修饰

                          public(公有)、protected(受保护)、private(私有)

                2.关于构造函数

                          创建对象时。数据成员会初始化两次,第一次是初始化默认值,第二次是设定成构造函数的值,如果没有编写构造函数,系统会有默认(Default)的空参数构造函数。

                3.重载(Overload)构造函数

                          可以根据参数类型或个数的不同,定义多个构造函数。但返回值类型不可作为重载的依据。         

                          ※ 特别注意打包器的问题,参数为int和Integer类型是不同的构造函数,创建的时候,传参数也要分别传1和new Integer(1);

                4.this关键字

                          可以区分构造函数参数和数据成员上,this.name=name;表示这个对象。

                          可以在构造函数中调用另一个已定义的构造函数。用this(参数值)表示。这样可以解决一些重复性的代码,重复在程序设计中是不好的味道(Bad Smell)

                5.final关键字

                          用在变量和数据成员上,表示不可修改,若修改会编译错误。

                          如果被声明为final但还没指定值,那表示延迟指定,执行时一定要指定。

                6.对象初始区块

                          在创建对象之后,调用构造函数之前,如果有需要运行的代码区块,可以用{}定义。一般写在类定义的最前面。

                7.static关键字

                          被static(静态/全局)修饰的成员和方法,都属于类自己拥有,即所有对象共用,而不各自拥有。同时会把类名称作为名称空间,只能用类名调用。建议为了形式习惯,在同一类里也这么书写。

                          ※ 特别注意:static方法不能调用非static的方法和数据成员。

                          static区块:在位码加载后,即加载完JVM就执行。写在类定义的最前面。用{}; 

                          JDK5后新增import static语法,可以偷懒方便些。

                8.不定长度自变量(Variable-Length Argument)

                          解决方法中自变量个数事先无法确定。在类型关键词后面加...,这样我们可以用不同个数的自变量实现方法。

                          编译程序蜜糖,反编译后是数组

                          另外注意,不定长度参数要放在参数列的最后

                9.内部类(Inner Class)

                          在类中再定义类,称为内部类。

                          通常非静态的内部类用private修饰,作用是辅助外部类中的某些操作而设计

                          用static修饰的内部类,把外部类当作名称空间。且可以存取外部类的static成员

                          方法里也可以定义内部类,作辅助较少使用,更多是定义匿名(Anonymous)内部类,与类继承或接口有关。

                          语法:定义一个没有名称的类,继承外部类,并定义了方法。有些场合略显啰嗦,JDK8的Lambda会解决。      

                10.传值调用

                          一些程序语言在调用方法传递自变量给参数时,有传值调用和传参考调用。

                          Java只有传值调用(Pass by Value)。

                          也就是说,当把对象作参传入方法中,则对象与参数的参考会绑定在一起,改变参数的数据也会改变对象;参数建立新的对象,就会被重新引用参考。

                          注:c++和java语言的参考是两种定义。而不是一回事。

四、输出与格式控制符号

          println()是显示文字后换行,print()是不换行。

          标准的输出API是System.out.printf()-f是format格式化,配合格式控制符号,控制变量类型的输出。

          如System.out.printf("%d*%d=%2d %n",x,y,x*y);

          第一个自变量(Argument)是字符串,里面可以加运算符、控制符、空格。第二个自变量开始,会依次置换掉第一个自变量的格式控制符号。

          可以在输出浮点数时指定精度,%.2f,还可以在指定输出时预留字符宽度,%6.2f

猜你喜欢

转载自blog.csdn.net/qq_36042506/article/details/83692931