/ *
- class属性の使用を宣言
- プロパティ(メンバ変数)とローカル変数の間の差
- 図1に示すように、同じ点
- 1.1変数の形で定義される:変数名=データ型の変数の値
- 1.2は宣言、再利用に必要とされます
- 1.3変数は、その対応するスコープとライフサイクルを持っています。
- 図2に示すように、異なる点
- 2.1異なる位置
- プロパティ(メンバ変数):クラスの一対の内側直接宣言{}
- ローカル変数:メソッド、メソッドパラメータ、コードブロック、コンストラクタパラメータ、変数の内部構成内
- 2.2権限の異なる修飾
- プロパティ:あなたは、その権限の許可を示すために修飾子を使用して、同時にプロパティを宣言することができます
- 一般的な権限の修飾子:官民保護され、デフォルト(デフォルト)、
- 公共:このクラスは、現在のパッケージ、サブクラス、外部クラスを使用することができます
- プライベート:内部クラスを使用することができ、このパッケージは、サブクラスを使用することはできない、外側クラッド
- 保護:これは、本パッケージをベースとすることができる、サブクラスは、パッケージ外で使用することができません
- 既定(デフォルト):これは基づいていてもよい、本パッケージの使用は、外側クラッドを使用して、キルトができません
- その他:静的、最終的に、abstract修飾子は特権ではありません
- ジュニアは、デフォルトでは、一時的に勉強します
- ローカル変数:使用権が修飾決勝使用することはできません。
- 2.3デフォルトの初期値
- プロパティ:クラスはそのタイプ属性に応じたデフォルト値が初期化されており、配列の同じ初期値
- (長いバイト、ショート、整数、)0の初期値をシェーピング
- フロート(フロート、ダブル)0.0の初期値
- CHAR(文字)0または '\ u0000の' の初期値
- ブール(ブール)の初期値はfalse
- 参照データ型(クラス、配列インターフェイス)NULLの初期値
- ローカル変数:
- デフォルトの初期値はありませんが、あなたは明示的にローカル変数を呼び出す前に割り当てられている必要があります
- 起動時にパラメータに割り当てられたローカル変数
- メモリ位置にロードされた2.4異なります
- プロパティ(非静的):静的プロセスゾーンにおけるヒープにロードされ、負荷
- ローカル変数:仮想マシンのスタック空間にロードされました
* /
/ * ------------------------------------------------ -------------
- クラスメソッドを宣言して使用します
- 記載の方法は、関数またはプロシージャとして知られている機能クラス、メソッドのJavaは、独立して存在しないことができたが、それは唯一のクラスで定義することができます。
- カプセル化プロセスのオブジェクトコードの再利用のための機能は、コードを簡略化するために実装されてもよいです。
- メソッドのステートメントの形式:
- 修飾子(静的な場合)(戻り値かどうか)メソッド名(パラメータ1パラメータタイプ1、パラメータ2パラメータ2を入力し、...){
-
方法体;
-
return 返回值;//如果无返回方法名前加void
- }
- 注1:権限のJavaの修飾子である4:2は、一般的に、公開前に使用し、プライベート、保護、デフォルトデフォルト
- 説明2:タイプ戻り値:値、ノーリターン値を返します。
- この方法は、この方法は、変数や定数データの指定された型を返すためにreturnキーワードを使用する必要がある一方で、戻り値の型を指定する必要があります方法文で値を返す場合
- 「リターン;」方法は、通常場合にのみ、メソッド本体の戻り値を使用して返さない、ボイドの使用に値、メソッド宣言を返さない場合
- これは、帰国後、この方法は、書き換え不可能な式の終わりを示します。
- 1、2及び機能要件、経験的に処理する:設計の方法は、値を返すかどうか
- 注3:識別子属しメソッド名、識別子名名前EENOWを参照してください、キーワードを避けるために、設計仕様に従わなければなりません
- 注4:メソッドが宣言されなくてもよいパラメータは、パラメータは、複数のステートメントであってもよいです。
- 、1機能要件2.に対処する上での経験を参照してください。あなたがデザインメソッドのパラメータを定義したいですか
- 注5:メソッドの具現本体、関数の方法
- 使用キーワードを返します。
- 1、範囲:方法ボディ
- 2、役割:1、方法は終了します。プロセスの終了は、データを返すようにしながら2は、リターンタイプの方法は、「リターン・データ」を使用して、あります
- 図3は、return文の後にはもはやステートメントを実行できません。
- メソッドの呼び出し
- この方法は、メソッド名で呼ばれ、それが呼び出されたときにのみ行われます
- この方法を使用すると、現在のクラスのプロパティとメソッドを呼び出すことができます
- 方法A、およびメソッドAを呼び出す場合は、Aの方法は、再帰的な方法であり、
- 注意事項・メソッド
- 図1に示すように、方法は再び実行されますと呼ばれています
- 唯一の方法は終了が使用される場合2は、具体的な方法の本体ケースの戻り値は、文を返さないかもしれません
- メソッドを定義するとき3、方法は、発信者に対処するために、呼び出し側が結果を返すべき
- 図4に示すように、この方法は、唯一のメソッドまたはプロパティを呼び出すことができ、この方法はもはや方法の内部に定義されていません
- 5は、この方法は、もはや法で定義されています
* /
package com.atguigu.contact;
import java.util.*;
public class Object2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//测试Parameter类
Parameter p = new Parameter();
System.out.println(p.isWisdom);
System.out.println(p.name);
System.out.println(p.age);
p.age = 30;
System.out.println(p.age);
// System.out.println(p.weight);//无法直接调用private修饰的属性
System.out.println(p.getWeight());//可以通过方法调用weight
p.setWeight(10);//可以通过方法修改weight
System.out.println(p.name + "已经" + p.getWeight() + "Kg了");
p.sleep(10);
//测试Person2类
Person2 person = new Person2();
person.name = "jery";
person.age = 21;
person.sex = '女';
person.addAge(2);//23
int newAge = person.addAge(2);//25
System.out.println(person.name + " is " + newAge + " years old");//25
person.showAge();//25
person.study(4);
Person2 person1 = person;
person1.addAge(10);
person.showAge();//35
Person2 person2 = new Person2();
person2.showAge();//0
person2.addAge(24);
person2.showAge();//24
person.showAge();//35
//测试Circle 类
Circle c = new Circle();
System.out.println("请输入圆的半径");
c.setRadius(scan.nextDouble());
//或者直接 c.radius = scan.nextDouble();
System.out.println("圆的面积是" + c.area() );
//测试Rectangle类
Rectangle rec = new Rectangle();
rec.print();
System.out.println("矩形面积为" + rec.print());
System.out.println(rec.print());//可以直接在syso内填入方法,输出图形和返回值。
//对于JVM来说这里代表的是变量,变量值是方法的返回值
//测试Rectangle1类
Rectangle1 rec1 = new Rectangle1();
System.out.println("请输入矩形的长度");
// rec1.length = scan.nextInt();
rec1.setLength(scan.nextInt());
System.out.println("请输入矩形的宽度");
// rec1.width = scan.nextInt();
rec1.setWidth(scan.nextInt());
rec1.print();
System.out.println("矩形的面积是 " + rec1.area());
//测试Rectangle2类
Rectangle2 rec2 = new Rectangle2();
System.out.println("请输入矩形的长度");
int m1 = scan.nextInt();
System.out.println("请输入矩形的长度");
int n1 = scan.nextInt();
System.out.println(rec2.print(m1,n1));
}
}
class Parameter{
Boolean isWisdom = true;
public String name = "kenny";
protected int age = 20;
private double weight = 60.5;//一定要保持体重
public void work() {
System.out.println(name + "工作了一整天");
}
public void sleep(int hour) {
work();//方法内可以调用类中的方法与属性,不需要实例化
System.out.println(name + "睡了" + hour + "小时");
//sleep(10); //会报错,因为这种递归无法结束,局部变量被重复创建,无法回收,栈空间很快溢出
}
public double getWeight() {
return weight;
}
public double setWeight(double i) {
System.out.println(name + "又胖了" + i + "Kg");
return weight += i;
}
}
class Person2{//同一个包内的类名不能重复?
String name;
int age;
char sex;
public void study(int hour) {
System.out.println(name + " has been studying for" + hour +"hours");
}
public void showAge() {
System.out.println(name + " is already" + age + "years old");
}
public int addAge(int i) {
age += i;
return age;
}
}
class Circle{
double radius;
public void setRadius(double i) {
radius = i;
}
public double area() {
return Math.PI * radius * radius ;
}
}
//方法可以不返回数值,直接在方法体内输出面积
//class Circle{
// double radius;
// public void area() {
// double area = Math.PI * radius * radius ;
// System.out.println("圆的面积是" + area);
// }
//}
// 去掉setRadius方法也可以使用
// class Circle{
// double radius;
// public double area() {
// return Math.PI * radius * radius ;
// }
//}
// 可以单独定义方法,不定义属性,但半径更适合当做属性
//class Circle{
// public double area(double radius) {
// return Math.PI * radius * radius ;
// }
//}
class Rectangle{
int length = 10;
int width = 8;
public int print() {
for (int i = 0; i < length; i++) {
for (int j = 0; j < width; j++) {
System.out.print("* ");
}
System.out.println();
}
return length * width;//可以把计算面积与打印矩形放在一个方法内,但只返回面积值
}
}
class Rectangle1{
int length;
int width;
public void setLength(int m) {
length = m;
}
public void setWidth(int n) {
width = n;
}
public void print() {
for (int i = 0; i < length; i++) {
for (int j = 0; j < width; j++) {
System.out.print("* ");
}
System.out.println();
}
}
public int area() {
return length * width;
}
}
class Rectangle2{
public int print(int m,int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print("* ");
}
System.out.println();
}
return m * n;
}
}