ICT関連の学習備忘録

ICTの学習をアウトプットするワークブックサイト

ICT関連の学習備忘録

2019/09/24:java基礎(その他クラスの利用)

クラス型変数

代入と参照の違い。
下記変数car1とcar2は異なる二つのオブジェクトではなく、
同じ一つのオブジェクトを指している。
class Car
{
	private int num;
	private double gas;
	
	public Car()
	{
		num = 0;
		gas = 0.0;
		System.out.println("車を作成しました。");
	}
	public void setCar(int n, double g)
	{
		num = n;
		gas = g;
		System.out.println("メンバーを" + num + "に、\nガソリン量を" 
			+ gas + "にしました。");
	}
	public void show()
	{
		System.out.println("車のナンバーは" + num + "です。");
		System.out.println("ガソリン量は" + gas + "です。");
	}

}

class Sample7
{
	public static void main(String[] args)
	{
		Car car1;
		System.out.println("car1を宣言しました。");
		car1 = new Car();
		car1.setCar(1234,20.5);
		
		Car car2;
		System.out.println("car2を宣言しました。");
		car2 = car1;
		
		System.out.print("car1がさす");
		car1.show();
		System.out.print("car2がさす");
		car2.show();
		
		System.out.println("car1がさす車に変更を加えます。");
		car1.setCar(5555,11.1);
		
		System.out.print("car1がさす");
		car1.show();
		System.out.print("car2がさす");
		car2.show();
	}
}

#実行結果
C:\YJSample\10>java Sample7
car1を宣言しました。
車を作成しました。
メンバーを1234に、
ガソリン量を20.5にしました。
car2を宣言しました。
car1がさす車のナンバーは1234です。
ガソリン量は20.5です。
car2がさす車のナンバーは1234です。
ガソリン量は20.5です。
car1がさす車に変更を加えます。
メンバーを5555に、
ガソリン量を11.1にしました。
car1がさす車のナンバーは5555です。
ガソリン量は11.1です。
car2がさす車のナンバーは5555です。
ガソリン量は11.1です。

nullの仕組み

変数に「null」という値を代入すると、その変数はオブジェクトを
指示さなくなり、そのオブジェクトがどの変数からも扱われなく
なった場合は、オブジェクトが破棄され、メモリがオブジェクトを
作成する前の状態に戻る事になっている。
この仕組みをガーベッジコレクション(garbagecollection)と呼ぶ。

クラス型の変数の仮引数

class Car
{
	private int num;    //基本型の変数を使ったフィールド
	private double gas; //基本型の変数を使ったフィールド
	private String name; //クラス型の変数を使ったフィールド
	
	public Car()
	{
		num = 0;
		gas = 0.0;
		name = "名無し";
		System.out.println("車を作成しました。");
	}
	public void setCar(int n, double g ,String nm)	//クラス型の変数を仮引数とするメソッド
	{
		num = n;
		gas = g;
		name = nm;
		System.out.println("メンバーを" + num + "に、\nガソリン量を" 
			+ gas + "に、\n名前を" + name + "にしました。\n");
	}
	
	
	public void show()
	{
		System.out.println("車のナンバーは" + num + "です。");
		System.out.println("ガソリン量は" + gas + "です。");
		System.out.println("名前は" + name + "です。\n");
	}

}

class Sample8
{
	public static void main(String[] args)
	{
		Car car1 = new Car();
		
		car1.show();
		
		int number = 1234;
		double gasoline = 20.5;
		String str = "1号車";
		
		car1.setCar(number, gasoline, str);	//str:文字列オブジェクトを指す変数を実引数として指定。
		
		car1.show();
	}
}

#実行結果
C:\YJSample\10>java Sample8
車を作成しました。
車のナンバーは0です。
ガソリン量は0.0です。
名前は名無しです。

メンバーを1234に、
ガソリン量を20.5に、
名前を1号車にしました。

車のナンバーは1234です。
ガソリン量は20.5です。
名前は1号車です。

オブジェクトの配列

int[] test = new int[5];
test[0] = 80;
test[1] = 60;
と同様にオブジェクトをまとめて扱う配列を作成することが出来る。

オブジェクトを配列で扱うには、最初に配列を準備する事が必要。
更に、実際のオブジェクトを作成し、配列要素がそのオブジェクトを指すように代入する。
という作業が必要になる。
※配列の準備( Car[] cars = new Car[x]等)と、
 オブジェクトを作成して、配列要素がそれらを指すように代入する
 (cars[x] = new Car();・・・)という二つの作業で、どちらもnewが
 使われるので間違えないように注意する。

StringBuffer reverse

import java.io.*;

class SampleP2
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br =
		new BufferedReader (new InputStreamReader(System.in));
		
		System.out.println("文字列を入力してください。");
		
		String str = br.readLine();
		
		
		StringBuffer out = new StringBuffer(str);
	//	out.reverse();
		System.out.println(str + "を逆順にすると" + out.reverse());
	}
}

#出力結果
C:\YJSample\10>java SampleP2
文字列を入力してください。
abcdefghijklmnop
abcdefghijklmnopを逆順にするとponmlkjihgfedcba

StringBuffer insert

import java.io.*;

class SampleP3
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br =
		new BufferedReader (new InputStreamReader(System.in));
		
		System.out.println("文字列を入力してください。");
		
		String str = br.readLine();
		
		System.out.println("aの挿入位置を整数で入力してください。");
		
		try{
			int num = Integer.parseInt(br.readLine());
			char add = 'a';
			
			StringBuffer in = new StringBuffer(str);
		
			System.out.println( in.insert(num,add) + "になりました。");
		}catch(java.lang.ArrayIndexOutOfBoundsException e){
			System.out.println("文字数がオーバーしてます。");
		}
	}
}

#実行結果
C:\YJSample\10>java SampleP3
文字列を入力してください。
123456
aの挿入位置を整数で入力してください。
4
1234a56になりました。

Mathクラス

import java.io.*;

class SampleP4
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br =
		new BufferedReader (new InputStreamReader(System.in));
		
		System.out.println("整数を2つ入力してください。");
		
		try{
		int num1 = Integer.parseInt(br.readLine());
		int num2 = Integer.parseInt(br.readLine());
		
		System.out.println(num1 + "と" + num2 + "のうち小さいほうは" + Math.min(num1,num2) + "です。");
			
		}catch(java.lang.NumberFormatException e){
			System.out.println("ナンバーフォーマットエラー");
		}

	}
}

#実行結果
C:\YJSample\10>java SampleP4
整数を2つ入力してください。
20
16
20と16のうち小さいほうは16です。



前のページへ戻る