javaの前補遺 - 基本データ型と自動型プロモーション

/ *
変数の
基本的なデータ型
の基本データ型の間の変換
の基本データ型と文字列間の変換
小数点とバイナリとの間で変換する
可変概念
1、メモリの記憶領域
2と、データは、同じタイプの領域であってもよいですレンジ変更
3を、プログラム変数は、基本的なストレージユニットは、変数タイプ、変数名と格納された値を備えている
可変の
メモリ内のデータ記憶のために、1
変数の使用上の注意
1、Javaでの各変数を再利用宣言されなければならない
このデータ領域にアクセスする変数名を使用して、2
3、可変範囲:{}内に位置する一対の定義
4、変数のみその範囲で有効である
、5、同じスコープではありません同じ名前の変数の定義

可変用いて
図1に示すように、可変フォーマットは定義されたJava:変数名データ型の変数の値=
2を、その変数は、使用を宣言する必要があり、
変数は、スコープ内の有効な、その範囲に定義されています。;域外故障の役割で
はない同じスコープ記述書の名前と同じ2つの変数で、

* /

class  VariableTest{
	public static void main(String[] args) {
		
		int myAge = 22//变量定义 int 为整数型
		//或者拆分为两步 第一步声明 int myAge,第二步赋值 myAge = 12
		System.out.println(myAge);//变量使用,变量在经过声明和赋值后才能被使用 
		System.out.println(myClass);//myClass变量在下方public中声明,无法作用到本作用域
	}
}
	public void method(){
		int myClass = 1//在这里定义一个变量名myClass,只能用在本作用域
		System.out.println(myClass);
}

/ *
Javaの定義のデータ型は、
各データ型が明確に定義された特定のを持っており、メモリ空間の異なるサイズがメモリに割り当てられているため、強く型付けされた言語に属するJavaの。
データサブタイプの
いずれかの基本データ型(プリミティブ型)
。1数(長い、短い整数のバイト整数、フロートフロートダブル)大きなメモリ空間に小さな
2チャーチャー
3ブール値ブール
2つの参照データ型(参照型)
クラスに属するクラス1、クラス列
2インターフェースインターフェース
。3アレイ[]配列

文の位置の異なるカテゴリによると、

変数は、ローカル変数のための方法の身体の中で宣言しました

メンバー変数:1、インスタンス変数(非静的変形において)
2、クラス変数(静的変形)
ローカル変数:1、パラメータ(定義されたプロセス変数コンストラクタ)
2、ローカル変数の方法は、(定義された内部メソッド)
(ブロックで定義された)3、ブロックローカル変数

シェーピングタイプ:ショートバイトlong intの
Javaの整数は、特定のOSに影響されないテーブルやフィールドの長さの範囲の種類の固定数を持って、可搬性のJavaプログラムを確認するために
一定のデフォルトのint型を形作るjavaの、長い定数は宣言する必要があります「L」又は「L」を加えた後
、典型的変数INI型として宣言されたJavaプログラム、不足しない限りだけ長く使用して、多数を表現する
タイプ番号表記憶域
の1272にバイト1バイト= 8 8ビット-128を256配電正負、中央0
15 -2〜2 15 -1の電源にショートバイト2
31 INT 31の電源への電力の4バイト-2 -12億2.1約
長い8 63 -2パワーバイト2 63 -1のパワーに
1メガバイト= 1024キロバイト1キロバイト= 1024bit

フロート:
整数型同様、Java型浮動小数点数の固定フィールド長テーブルの範囲を有し、
特定のオペレーティングシステムに影響されません

浮動小数点式の2種類があります。
小数点形式:例えば5.12 512.0f 0.512(小数点が存在しなければならない)
科学的表記の形:例えば5.12e2 512E2 100E-2

フロート:単精度、精度要件を満たすために、多くの場合、7桁の有効桁数を正確に困難
ダブル:倍精度、倍精度浮動小数点、通常このタイプの
Javaのデフォルトの浮動小数点型のdouble型の定数ステートメントフロート定数、F、または後にFを添加しなければならない
単精度浮動小数点数が大きい長よりも10〜38の範囲の電力を表範囲-3.403E38 3.403E38 E38バイト4を占める
表現の範囲バイト8を占有-1.798ダブルダブルE308は1.798E308に
浮動小数点型は、科学的表記法を使用することができるように、範囲が整数よりも大きいです

文字:文字の
文字クラス変数は、スペースの2つのバイトを占め=チャーは
Javaの使用Unicodeのコード内のすべての文字は、その文字は漢字文字または文字または他の言語を保存することができ

文字種の三つの形態
A「「は、C1 =チャーとして単一の文字、で囲まれた」1、一重引用符によって文字定数」
「チャーC3 =」のchar = C2」9'
2、さらに紡糸のJavaの使用が可能文字定数の中に特殊文字の次の文字を\エスケープ
、このような文字C4 =「\ n」のように、\ nは改行文字のn \フォーマットを書いて、出力\ N-場合\、以下の説明では、もはやエスケープされていないことを示しを表し
、。3定数を表すために直接使用Unicode文字値:「\ XXXX」、XXXXが
進整数、例えば\ u000Aとしては、\ Nを表します

それはUnicodeコードに対応するので、CHAR型は、計算に関与しています

ASCIIコードを
内部コンピュータはバイナリ表現を使用して、すべてのデータを、各ビット(ビット)荷電の0 1 2種
256を組み合わせることができるこのように8進状態は、バイトと呼ばれ、バイトをすることができる
256を表すために使用されます状態の異なる種類の、256個のシンボルであるシンボルに状態相当する
1960年代には、ユナイテッドは、ASCIIコードとして知られている文字コードを、開発するために状態128の文字コードの総数を提供する
スペースなど32は、バイナリ00100000、aは65進01000001。それは再生できません128のシンボル、制御シンボル32を含む
0統一最前1の後ろにのみバイト7占有
欠点を、すべての文字が文字を表していない、同じ符号が不一致である
世界をコードする種々の存在します進数と方法は、このように文書のニーズを開く異なるシンボルは、符号化知っていると説明、または文字化けすることができます

Unicodeコード
世界中の組み込んシンボルは、各シンボルは、Unicodeが文字化けしていない使用して、独自のコードを与えています。
欠点のみ所定のバイナリコードシンボルは、バイナリコードの記憶がどのように指定されていない
、ASCIIとUnicodeとを区別することができない、コンピュータが3つの3バイトまたは記号で表されるシンボルとを区別することができない
各場合は、追加の文字が1バイトで表現しました所定の3または4バイトのシンボル、ストレージスペースの意志の偉大な廃棄物

UTF-8エンコーディング

ユニコードの最も広く使用されている実装では、
一つのシンボルとすることができる6つのバイトを使用して、可変長符号化する方式で、シンボルはバイトの長さに応じて変化する
規則コーディング
シングルバイトUTF-8エンコーディング、最上位ビット0、1、残り図7は、エンコード文字に使用されるASCII当量で
含むnバイト場合、マルチバイトUTF-8符号化の、2を、最初のnビットの最初のバイトが1、n +型の最初のバイトであります0であり
、すべての最初のバイトの後に、上位2ビットが10であり、残りの6つの文字をするために使用される符号化バイトを符号化するために使用される文字の残りのバイト

ブール(論理値)が
2つのだけの値、真または偽のいずれか取ることができる
決意条件、環状構造。

* /

class VariableTest1{
	public static void main(String[] args) {
		byte b1 = -128;
		byte b2 = 127;
		System.out.println(b1);
		System.out.println(b2);
		int i1 = 223242535;
		long l1 = 22323232214141L;//long类型变量赋值结尾加L或者l
		System.out.println(l1+1);
		double d1 = 123.34234;
		System.out.println(d1);
	    float f1 = 133.3456782F;//float类型的变量赋值结尾加f或F
		System.out.println(f1);
		char c1 = 'a';//定义char类型变量只能写一个字符 可以是字母数字中文特殊符号等
        char c3 = 97;//char 可以直接赋值ASCII码,很少这么写
		char c4 = '5';//在此处5为字符,对应一个ASCII码
		int i2 = (int)c4;//强转字符5为int型
		char c5;
		c5 = 'g';//赋值变量的书写方式也可以分步写。
		System.out.println(i2);//输出53,代表字符5的ASCII码
		System.out.println(c3);
		System.out.println("hello"+c1);
		char c2='\n';
		System.out.print("hello" + c2);
		System.out.println("world");
		System.out.println("\\n");
		System.out.println("你是\"最\"大的");//加\后表示后面的字符不做特殊用途
		boolean bb1 = false;
        System.out.println(bb1);
        boolean isOld = true;
			if(isOld){
				System.out.println("不行");
			}else{
			    System.out.println("可以");	
			}


	}
}

/ *
文字列型(文字列)変数アプリケーション
。1、クラス文字列変数のタイプに属する参照、変数タイプは基本データに属していない
2、「」、「」String型変数宣言されているを使用して相対チャー変数の宣言。
図3に示すように、文字列型の値も空である、単一の文字であってもよいです。char型が空でないが、空間があってもよい
、例えば、チャーC =「」;ではないことにより、コンパイラチャーC =「」;コンパイル
4、列8つの基本データ型および操作を行うことができ、操作が動作のみに接続することができ、利用+特許第
5、文字列、および演算結果の他のタイプはString型です。

* /

class StringTest {
	public static void main(String[] args) {
        System.out.println("Hello World!");
		String s1 = "Hello大家好";
		String s2 = "H";
		String s3 = "";
		System.out.println(s1);
		//*************************
		int number = 100;
		String numberStr = "学号";
		String info =numberStr + number;//加号+表示连接运算
		boolean b1 =true;
		String info1 = info + b1;//加号+表示连接运算
		System.out.println(info1);
		System.out.println(info);
		// 练习1
		char c = 'a';//ASCII中 a 的值是97,A的值是65
		int num = 10;
		String str = "hello";
		System.out.println(c + num + str);//输出 107hello ,第一个加号是相加,char和int相加输出int型,第二个加号是连接,int与String连接输出String
		System.out.println(c + str + num);//输出 ahello10
		System.out.println(c + (num + str));//输出a10hello 括号内先运算
		System.out.println((c + num) + str);//输出107hello
		System.out.println(str + num + c);//输出 hello10a
		System.out.println(str + 111);//输出 hello111
		System.out.println(str + "world");//输出 helloworld 
		//System.out.println(str + world);//无法编译,world必须加""才能被认为是String类

        //练习2
		//输出*  *的方法
		System.out.println("* *");//正确
		System.out.println('*' + '\t' + '*');//错误,输出char类型数值93
		System.out.println('*' + "\t" +'*');//正确
		System.out.println('*' + '\t' + "*");//错误 输出51*
		System.out.println('*' + ('\t' + "*"));//正确
		/*练习3
		String str1 = 4; 无法编译,没有""
		String str2 = 3.56f + "" ; 可以编译
		System.out.println(str2);输出3.56
		System.out.println(3 + 4 + "hello");输出7hello
		System.out.println("hello" + 3 + 4);输出hello34
		System.out.println('a' + 1 + "hello");输出98hello
		System.out.println("hello" + 'a' + 1);输出helloa1
		 练习4
		判断对错
      1   short s = 5;
		  s = s - 2;     无法编译,2int型常量
      2   byte b = 3;
		  b = b + 4; 无法编译
		  b = (byte)(b + 4);可以编译,强制转换intbyte
	  3   char c = 'a';
		  int i = 5;
		  float d = .314f;
		  doule result = c + i + d;可以编译
      4   byte b = 5;
	      short s = 3;
		  short t = s + b;无法编译,byteshort运算应为int*/
		//String str1 = 123; 编译不通过
		String str1 = 123 + "";//编译可以通过,整数常量int型与String运算输出String类。
		System.out.println(str1);//输出123字符串,将数值转换为字符串可以用这种方式。
		
		//int num2 = str1; 编译不通过
		//int num2 = (int)str1;编译也不通过
		int num2 = Integer.parseInt(str1);
		System.out.println(num2);//通过Integer方法可以将String解析为int。
	}


}

/ *
基本データ型間の算術規則は、
ブール値が含まれていない、変数のデータ型の間でのみ7つの基本的な操作を議論しました

図1に示すように、自動リフトタイプが
小容量と変数の大容量可変データ・タイプのデータ・タイプは、計算を行うと、結果は自動的にデータタイプの大容量に昇格され
、この時点での容量サイズは、サイズの範囲を意味する単語の数が占有されていない表しますそのようなフロート(4バイト)のような部分の大きさは、長い(8バイト)の容量よりも大きい
バイト・> SHORT-> INT->長期性>フローティング状態>ダブル
バイト、文字、SHORT-> INT->長期>フローティング状態>ダブル
チャーは、短い各出力を算出する3つのint型以上の行われるバイト、
2は、鋳造
操作種別逆自動リフティング演算を
1シンボル(強使用する必要があります)は、例えば長L1 = 112.9L;短いS1 = (ショート)L1と、 出力112、整数部のみをとります。
図2に示すように、必須の変換を使用すると、精度の損失が発生する可能性があります。

なお、
符号
長1 = 122;デフォルトでコンパイルすることができるがint型に
コンパイラが終了プラスLに必要な整数の範囲を越えて通過しない、;長L2 = 12345673333
フロートF1 = 12.3、コンパイル障害、追加しなければならないF.をデフォルトのタイプダブルので。
2コードの場合2、
バイト= 12 Bである、
バイトB1 = B + 1、コンパイルは失敗し、番号1は分数デフォルトダブル、デフォルトがint型で、整数定数であります

* /

 class VariableTest2{
	public static void main(String[] args) {

		byte b1 = 2;
		int i1 = 1278;
		//byte b2 = b1 + i1
		//编译不通过,因为int范围大
		int i2 = b1 + i1;
		long l1 = b1 +i1;	
		System.out.println(i2);
		System.out.println(l1);
		float f1 = b1 + i1; //整数型数值运算结果可以定义为浮点型,系统输出自动加小数点
		System.out.println(f1);
		short s1 = 123;
		double d1 = s1;//可以将整数型直接转换为浮点型,后面自动加小数点
		System.out.println(d1);
		char c1 = 'a';// a 对应的数值为97
		int i3 = 10;
		int i4 = c1 + i3;//char只能容纳一个字符,所以i4不能为char类型
		System.out.println(i4);
	}
}
 class VariableTest3{
	public static void main(String[] args) {
        long l1=123L;//数值没有超出long范围可以不加L,也能编译,会自动转换为int类型
		short s1 = (short)l1;//数值没有超出short范围,强制转换后精度没有损失。
		System.out.println(s1);
		double d1 = 12.9;
		int i1 = (int)d1;//执行截断操作,结果只取整数部分,不是四舍五入
		System.out.println(i1);//输出12,损失小数点,精度损失
		int i2 = 128;
		byte b1 = (byte)i2;
		System.out.println(b1);//输出-128跟二进制规则有关,损失精度。
		long l2=128456744453453L;
		int i3 = (int)l2;
		System.out.println(i3);
		short s2 = (short)l2;
		System.out.println(s2);
		byte b2 = (byte)l2;
		System.out.println(b2);

	}
}
发布了47 篇原创文章 · 获赞 1 · 访问量 1043

おすすめ

転載: blog.csdn.net/wisdomcodeinside/article/details/104457997