對象的屬性和方法:
類是模子唤崭,定義對象將會擁有的特征(屬性)和行為(方法)
類是對象的類型颗味,不同于int類型:具有方法
- 類的定義方法:
public class 類名 {
//定義屬性部分
屬性1的類型 屬性1;
屬性2的類型 屬性2;
…
屬性n的類型 屬性n;
//定義方法部分
方法1;
方法2;
…
方法m;
}
使用對象的步驟
- 創(chuàng)建對象
類名 對象名 = new 類名();
School center = new School();
- 引用類的屬性:對象名.屬性
- 引用類的方法:對象名.方法名()
center.name = "北京中心"; //給name屬性賦值
center.showCenter(); //調(diào)用showCenter()方法
一個景區(qū)根據(jù)游人的年齡收取不同價格的門票。請編寫游人類书蚪,根據(jù)年齡段(10歲到60歲之間20元喇澡,否則免費)決定能夠購買的門票價格并輸出
package com.company;
/**
* Created by ttc on 17-12-25.
*/
public class JourneyPerson {
String name;
int age;
public void showInfo()
{
String ticketInfo = "";
if(age < 10 || age > 60)
{
ticketInfo = "門票免費";
}
else
{
ticketInfo = "門票價格為:20元";
}
System.out.println(name + "的年齡為:"+ age + ticketInfo);
}
}
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// write your code here
JourneyPerson journeyPerson = new JourneyPerson();
while (true)
{
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入姓名屯蹦,輸入n退出程序");
//創(chuàng)建一個游人類
//將用戶輸入的姓名蹦骑,賦值給游人對象journeyPerson的名字屬性
journeyPerson.name = scanner.next();
if(journeyPerson.name.equals("n"))//代表用戶想退出程序
{
// 退出程序
break;
}
//將用戶輸入的年齡,賦值給游人對象journeyPerson的年齡屬性
System.out.println("請輸入年齡");
journeyPerson.age = scanner.nextInt();
//輸出該游人門票信息和個人信息showInfo
journeyPerson.showInfo();
}
System.out.println("退出程序");
}
}
定義類的方法
- 如果方法具有返回值谨娜,方法體中必須使用關(guān)鍵字return返回該值为流,返回值類型為該返回值的類型
return 表達式呕屎;
作用: 跳出方法、返回結(jié)果
public class Student{
String name = "張三";
public String getName(){
return name;
}
//……
}
-
如果方法沒有返回值艺谆,返回值類型為void
方法調(diào)用
對象名.方法名();
方法之間允許相互調(diào)用榨惰,不需要知道方法的具體實現(xiàn),實現(xiàn)重用静汤,提高效率
常見錯誤
public class Student2 {
public double getInfo() {
double weight = 95.5;
double height = 1.69;
return weight, height;
}
}
方法不能返回多個值琅催!
public class Student3 {
public String showInfo() {
public double getInfo() {
double weight = 95.5;
double height = 1.69;
return weight;
}
return "我是一名學(xué)生";
}
}
多個方法不能相互嵌套定義!
public class Student4 {
int age = 20;
if(age < 20) {
System.out.println("年齡不符合入學(xué)要求虫给!");
}
public void showInfo() {
return "我是一名學(xué)生";
}
}
不能在方法外部直接寫程序邏輯代碼藤抡!
練習(xí):計算骰子每面出現(xiàn)的次數(shù)
package com.company;
import java.util.Random;
/**
* Created by Think on 2018/6/3.
*/
public class DiceDemo {
int[] dice = new int[6];
Random random = new Random();
public void initial(){
for (int i = 0; i < 6; i++)
{
dice[i] = i + 1;
}
}
public int throwDice(){
int index = random.nextInt(6);
return dice[index];
}
}
package com.company;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
* Created by Think on 2018/6/2.
*/
public class Test {
public static void main(String[] args) {
int[] count = new int[7];
DiceDemo diceDemo = new DiceDemo();
diceDemo.initial();
for (int i = 0; i < 6000; i++)
{
int x = diceDemo.throwDice();
count[x]++;
}
for (int i = 1; i < count.length; i++)
{
System.out.println("數(shù)字"+ i + "出現(xiàn)了" + count[i] + "次");
}
}
}
運行結(jié)果:
數(shù)字1出現(xiàn)了1014次
數(shù)字2出現(xiàn)了955次
數(shù)字3出現(xiàn)了992次
數(shù)字4出現(xiàn)了965次
數(shù)字5出現(xiàn)了1065次
數(shù)字6出現(xiàn)了1009次
成員變量和局部變量
作用域不同
局部變量的作用域僅限于定義它的方法
成員變量的作用域在整個類內(nèi)部都是可見的
初始值不同
Java會給成員變量一個初始值
Java不會給局部變量賦予初始值
在同一個方法中,不允許有同名局部變量抹估;在不同的方法中缠黍,可以有同名局部變量
在同一個類中,成員變量和局部變量同名時药蜻,局部變量具有更高的優(yōu)先級
public class Test {
int score1 = 88;
int score2 = 98;
public void calcAvg() {
int avg = (score1 + score2)/2;
}
public void showAvg(){
System.out.println("平均分是: " + avg);
}
}
局部變量avg的作用域僅限于calcAvg()方法
作者:豆約翰
鏈接:http://www.reibang.com/p/3bacbcb9bdec
來源:簡書
著作權(quán)歸作者所有瓷式。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處语泽。