我的Java之路(3)

续前篇

方法:

1。构造方法:供类的创建对象使用,给出类创建对象的初始状态。

实例方法和类方法。

对象不可以调用构造方法,构造方法专门创建对像。

除构造方法外,方法返回的数据类型可以是任意java类型。除构造方法外,方法都有类型,即使是void,也不允许省略不写。

方法起名字:如果用拉丁字母,首写字母应使用小写,如果由多个单词组成,则从第二个单词开始的其他单词应大写。(局部变量的名字命名同样如此)

方法体的构成:变量的定义和合法的java语句。方法体中声明的变量以及方法的参数称为局部变量,局部变量仅仅在该方法内有效。

方法声明中用关键字static修饰的称为类方法货静态方法,不用static修饰的称为实例方法。一个类中的方法 可以互相调用,

实例方法可以调用该类中的实例方法和静态方法(类方法)。类方法只能调用该类的类方法,不能调用实例方法。

实例方法必须通过对象来调用:因为当类的字节码文件被加载到内存中时,类的实例方法不会被分配入口地址,只有但该类创建对象后,类中的实例方法才分配入口地址。

当使用new和构造方法创建对象时,首先给配成员变量给该对象,同时实例方法分配入口地址,然后执行构造方法中的语句,完成必要的初始化。

注意:在创建第一个对象时,类作中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,方法的入口地址被所有对象共享。

类方法通过类名直接调用。

参数传值:

(1)基本数据类型的参数传值(略)

(2)引用类型的参数的传值

java的引用类型包括对象,数组,以及后面将要学习的接口,当参数是引用类型时,“传值”传的事变量的引用而不是变量所引用的的实体。(具体见参考书p56)

方法的重载(略,类似C++的重载)

关键字this:this可以出现在实例方法和构造方法中的,但是不可以出现在类方法中。因为类方法可以通过类名直接调用,这是可能还没有任何对象诞生。

区分成员变量和局部变量

成员变量在整个类中有效,局部变量仅仅在方法内有有效。在方法体中声明的变量以及方法的参数称为局部变量,方法的参数在整个方法内有效,方法内的局部变量在从定义它的位置后开始有效。

注意:如果实例方法中或类方法局部变量名字和成员变量的名字相同,则成员变量被隐藏,急这个成员变量在这个方法内暂时失效。如:

class Tom{

    int x=188,y;

    void f(){

    int x=3;

    y=x;//此时Y的值是3,而不是188.如果方法f()中没有int x=3;语句,则y的值是188

  }

}

如果这时想在实例方法或类方法内使用成员变量,对于实例方法,成员变量前面的this,就不可以省略,对于类方法,必须显示的使用类名操作变量。详见p61

包(包是java语言中有效管理类的一种机制)

package 包名。

如果使用了包语句如
package  tom.jiafei;

那么目录结构必须包含以下结构:...\tom\jiafei

编译的名字与运行程序的名字不一样如编译时如一个包名为tom.jiafei,其中有源文件主类名example:

则在编译时D:\ch4\tom\jiafei>javac example.java

运行时用D:\ch4>java tom.jiafei.example

包名应避免重复,可以用本公司域名倒置作为包名。

使用-d可以指定生成的字节码文件的位置。

如果源文件使用包语句声明了包名,使用参数-d是要格外小心。

具体见p62

4.11.import语句

 import语句引入包中的类。(java提供类略)

系统自动引入java。lang包中的类

Data来显示本机当前时间。如:

import java.util.Data;

public class example{

    public static void main(String args[]){

      Data data=new Data();

      System.out.printf("本机当前时间:\n%s",data);

    }

  }

也可以编译一个源文件得到该源文件中类的字节码文件,然后供其他类使用。

避免类名混淆(详见p66)

4.12访问权限

待续。。。。

原文地址:https://www.cnblogs.com/yanmingup/p/2874039.html