私のjava学習ノート(一)

7736 ワード

最初のjavaプログラムは、やはりよく知っているhello worldです.
public class FirstSample {   // 
public static void main(String[] args)   // 
{
System.out.println("Hello World!");    // “Hello World!”
    }
}
 

出力はとても面白くなくて、コンソールでHello Worldを出力します!
 
プログラムの注意すべき点は次のとおりです.
1.javaプログラムは大文字と小文字を区別し、大文字と小文字に敏感である.
2.クラスはjavaアプリケーションとappletをすべて構築する構築ブロックです.Javaアプリケーションのすべてのコンテンツはクラスに配置する必要があります.ソースコードのファイル名は、共通クラスのクラス名と同じでなければなりません.
3.java言語の仕様に従ってmainメソッドをpublicと宣言する必要があります.mainのメソッドは静的でなければなりません.
 
Javaは強いタイプの言語です.
Javaには8つの基本タイプ、4つの整数タイプ、2つの浮動小数点タイプ、1つのUnicode符号化を表す文字ユニットの文字タイプchar、および真の価値を表すbooleanタイプがあります.Javaには符号なしタイプは何もありません.
 
を選択します.
ストレージ要件
int
4バイト
short
2バイト
long
8バイト
byte
1バイト
 
Javaには2つの浮動小数点タイプがあります.
を選択します.
ストレージ要件
float
4バイト
double
8バイト
 
JavaのcharタイプはUTF-16でコードユニットを符号化する.
Booleanタイプには、論理条件を推定するためにfalseとtrueの2つの値があります.整数値とブール値の間では相互変換できません.
 
Javaではkeywordfinalを用いて定数を示す.
final double MONEY = 50;

keywordfinalは、この変数が一度だけ付与され、付与された後、変更できないことを示します.
1つの定数が1つのクラスの複数のメソッドで使用されると仮定すると、通常、これらの定数はクラス定数になります.keywordstatic finalを使用してクラス定数を設定します.
Public static final double MONEY = 50;

変数がpublicとして宣言されると仮定すると、他のクラスのメソッドもこの定数を使用することができる.
 
Javaで整数を0で除算すると異常が発生し、浮動小数点数を0で除算すると無限大またはNaN結果が得られます.
 
Javaのビット演算子には、&と、|または、^異或、~非、<、>>左シフトと右シフトがあります. 
int a = (n & (1 << 3)) >> 3; // n 1。

>>>演算子は0で上位を埋め、>>演算子はシンボルビットで上位を埋めます.<<<演算はありません.
 
Java文字列はUnicode文字列です.
 
Stringクラスのsubstringメソッドは、大きな文字列からサブ列を抽出することができる.
String a = “hello”;
String b = a.substring(0,4);//b  hell b 4-0=4

Java言語は、+番号を使用して2つの文字列を接続することに同意します.文字列と非文字列の値をつなぎ合わせると、後者は文字列に変換されます.
int age = 13;
String a = “abc” + age;  //a abc13 

equalsメソッドを使用して、2つの文字列が等しいかどうかを検出します.
a.equals(b); //  true , false。

大文字と小文字を区別せずに2つの文字列が等しいかどうかを検出したい場合は、
equalsIgnoreCase
方法.
“Hello”.equalsIgnoreCase(“hello”);

空白列と値null列の検出方法
(str != null && str.length() != 0)

まずstrがnullでないことを確認します.null値でメソッドを呼び出すと、エラーが発生します.
 
多くのセグメントの文字列を使用して文字列を構築する必要がある場合は、StringBuilderクラスを試してみましょう.
StringBulider builder = new StringBuilder();
bulider.append(ch);// 
builder.append(str);// 
String all = builder.toString();// all

Javaでの入出力インスタンス
 
import java.util.*;
public class InputTest {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);// Scanner 
System.out.print(" ?");
String name = in.nextLine();
// 
System.out.print(" ?");
int age = in.nextInt();
// 
System.out.println("Hello," + name  + "  " + age + " ");
    }
}

ブロック一致文とは、カッコで囲まれたいくつかの条件の簡単なjava文を指します.ブロックは変数の役割ドメインを決定します.1つのブロックは、もう1つのブロックにネストすることができる.ネストできない2つのブロックに同じ名前の変数を宣言します.
 
switch文で
ケースラベルは、次のようにすることができます.
1.タイプはchar、byte、shortまたはint
2.列挙
3.javaSE 7からcaseタグは文字列字面量であってもよい.
 
配列は、同じタイプの値の集合を格納するデータ構造です.
 
配列の宣言
int[] a = new int[10];
int a[] = new int[10];

数値配列を作成すると、すべての要素が初期化されます.
0.boolean
配列の要素は
false
.オブジェクト配列の要素は特殊な値に初期化されます
null
を選択します.これは、これらの要素がオブジェクトを保存していないことを示します.
 
配列中の要素の個数を得るにはarrayを用いることができると仮定する.length
 
for(int i = 0;i < a.length;i++)
System.out.println(a[i]);

配列を巡るもう一つの方法
for(int element:a)
System.out.println(elelment);

数値型配列を並べ替えるには、
Arrays
クラス内の
sort
方法
Arrays.sort(a);

Math.random法は0から1までのランダム浮動小数点数を返し,0からn−1までのランダム数を得ることができる.
 int r = (int)(Math.random()*n);

いくつかの小さな応用サンプル
1.抽選問題
import java.util.*;
public class test001 {
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		
		System.out.println(" ?");
		int a = in.nextInt();
		
		System.out.println(" ?");
		int n = in.nextInt();
		
		int[] num = new int[n];
		for(int i = 0; i < num.length;i++)
		{
			num[i] = i + 1;
		}
		
		int[] result = new int[a];
		for(int i = 0 ; i <result.length;i++)
		{
			int rad = (int)(Math.random() * n);
			result[i] = num[rad];
			num[rad] = num[n-1];
			n--;
		}
		
		Arrays.sort(result);
		System.out.println(" :");
		for(int ele : result)
		{
			System.out.println(ele);
		}
	}
}

2.銀行預金の利息問題
 
public class test002 {
	public static void main(String[] args)
	{
		final double Begin = 10;
		final int R = 6;
		final int Y = 10;
		
		double[] Rate = new double[R];
		for(int i = 0; i < Rate.length; i++)
		{
			Rate[i] = (Begin + i) / 100.0;
		}
		
		double[][] bala = new double[Y][R];
		for(int i = 0; i < bala[0].length; i++)
		{
			bala[0][i] = 10000;
		}
		
		for(int i = 1;i < bala.length; i++)
		{
			for(int j = 0; j < bala[i].length; j++)
			{
				double oldbala = bala[i - 1][j];
				
				double up = oldbala * Rate[j];
				
				bala[i][j] = oldbala + up;
				
			}
		}
		
		for(int i = 0; i < Rate.length;i++)
		{
			System.out.printf("%9.0f%%",100 * Rate[i]);
		}
				
		System.out.println();
		for(double[] r : bala)
		{
			for(double b : r)
			{
				System.out.printf("%10.2f",b);
			}
			System.out.println();
		}
	}
}

3.不規則配列で楊輝三角を印刷する
public class test003 {
	public static void main(String[] args)
	{
		final int m = 10;
		
		int[][] a = new int[m][];
		for(int i = 0; i<m ; i++)
		{
			a[i] = new int[i+1];
		}
		
		for(int i = 0; i < a.length;i++)
		{
			for(int j = 0; j <a[i].length; j++)
			{
				int temp = 1;
				for(int k = 1 ; k <= j; k++)
				{
					temp = temp * (i - k + 1) / k;
				}
				a[i][j] = temp;
			}
		}
		for(int[] r : a)
		{
			for(int ele : r)
			{
				System.out.printf("%4d",ele);
			}
		System.out.println();
		}
	}
}