【贪玩巴斯】JAVA初学笔记——chapter4 JAVA面向对象上,①属性与局部变量的对比,②方法举例与声明 !//2021-2-6

  • Post author:
  • Post category:java




一、属性与局部变量的对比:


*

* 类中属性的使用

*

*

属性(成员变量)   vs  局部变量


*


1.相同点:



*         1.1  定义变量的格式:数据类型  变量名 = 变量值

*         1.2  先声明,后使用

*         1.3  变量都有其对应的作用域

*

*

*


2.不同点




*

2.1 在类中声明的位置的不同:


*         属性:直接定义在类的一对{}内

*         局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

*

*

2.2 关于权限修饰符的不同


*

属性:

可以在声明属性时,

指明其权限,使用权限修饰符。


*

常用的权限修饰符:private、public、缺省、protected  —>封装性


*             目前,大家声明属性时,都使用缺省就可以了。

*

局部变量:

不可以使用权限修饰符。

*

*

2.3 默认初始化值的情况:


*

属性:类的属性,根据其类型,都有默认初始化值。


*             整型(byte、short、int、long):0

*             浮点型(float、double):0.0

*             字符型(char):0  (或’\u0000’)

*             布尔型(boolean):false

*

*             引用数据类型(类、数组、接口):null

*

*

局部变量:没有默认初始化值。



*          意味着,我们在调用局部变量之前,一定要显式赋值。

*             特别地:形参在调用时,我们赋值即可。


*

*

2.4 在内存中加载的位置:


*         属性:加载到堆空间中   (非static)

*         局部变量:加载到栈空间

*

*/



代码举例说明:



public class UserTest {

public static void main(String[] args) {


User u1 = new User();

System.out.println(u1.name);

System.out.println(u1.age);

System.out.println(u1.isMale);

u1.talk(“韩语”);

u1.eat();

}

}

class User{


//属性(或成员变量)

String name;

public int age;

boolean isMale;

public void talk(String language){//language:形参,也是局部变量

System.out.println(“我们使用” + language + “进行交流”);

}

public void eat(){


String food = “烙饼”;//局部变量

System.out.println(“北方人喜欢吃:” + food);

}

}



二、类中方法的声明和使用:


/*

* 类中方法的声明和使用

*


* 方法:描述类应该具有的功能。

* 比如:Math类:sqrt()\random() \…

*     Scanner类:nextXxx() …

*     Arrays类:sort() \ binarySearch() \ toString() \ equals() \ …


*


1.举例:


* public void eat(){}

* public void sleep(int hour){}

* public String getName(){}

* public String getNation(String nation){}

*


2. 方法的声明:

权限修饰符  返回值类型  方法名(形参列表){


*                     方法体

*               }

*   注意:static、final、abstract 来修饰的方法,后面再讲。

*


3. 说明:


*

3.1 关于权限修饰符:默认方法的权限修饰符先都使用public


*             Java规定的4种权限修饰符:private、public、缺省、protected  –>封装性再细说

*

*

3.2 返回值类型: 有返回值  vs 没有返回值


*             3.2.1

如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量:“return 数据”。

如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就不需要使用return.但是,如果使用的话,只能“return;”表示结束此方法的意思。

*

*             3.2.2

我们定义方法该不该有返回值?

*                 ① 题目要求

*                 ② 凭经验:具体问题具体分析

*

*

3.3 方法名:属于标识符,遵循标识符的规则和规范,“见名知意” (小写)


*

*

3.4 形参列表: 方法可以声明0个,1个,或多个形参。

3.4.1 格式:数据类型1 形参1,数据类型2 形参2,…

*

3.4.2 我们定义方法时,该不该定义形参?

*                 ① 题目要求

*                 ② 凭经验:具体问题具体分析

*

*

3.5 方法体:方法功能的体现。


*



4.return关键字的使用:


*      1.使用范围:使用在方法体中

*      2.作用:

① 结束方法

② 针对于有返回值类型的方法,使用”return 数据”方法返回所要的数据。

3.注意点:return关键字后面不可以声明执行语句。

*


5. 方法的使用中,可以调用当前类的属性或方法:


*          特殊的:方法A中又调用了方法A:递归方法。

*

方法中,不可以定义方法。


*/


6.代码说明如下:


public class CustomerTest {


public static void main(String[] args) {

Customer cust1 = new Customer();

cust1.eat();

//测试形参是否需要设置的问题

//        int[] arr = new int[]{3,4,5,2,5};

//        cust1.sort();

cust1.sleep(8);

}

}

//客户类

class Customer{

//属性

String name;

int age;

boolean isMale;

//方法

public void eat(){


System.out.println(“客户吃饭”);

return;

//return后不可以声明表达式

//        System.out.println(“hello”);

}

public void sleep(int hour){


System.out.println(“休息了” + hour + “个小时”);

eat();

//        sleep(10);

}

public String getName(){

if(age > 18){


return name;

}else{


return “Tom”;

}

}

public String getNation(String nation){


String info = “我的国籍是:” + nation;

return info;

}

//体会形参是否需要设置的问题

//    public void sort(int[] arr){


//

//    }

//    public void sort(){


//        int[] arr = new int[]{3,4,5,2,5,63,2,5};

//        //。。。。

//    }

public void info(){


//错误的 不能在一个方法中再定义一个方法

//        public void swim(){


//

//        }

}

}



版权声明:本文为D16100原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。