データ型と変数および型変換、プロモーション(Java)

1つ:リテラル定数

言語を学ぶとき、最初に遭遇するリテラル定数は「HelloWorld!」です。
定数:プログラムの実行中、固定量は定数と呼ばれます。

public class Demo{
    
    
 public static void main(String[] args){
    
    
     System.Out.println("hello world!");
     System.Out.println(100);
     System.Out.println(3.14);
     System.Out.println('a');
     System.Out.println(true);
     System.Out.println(false);

その中で、hello world!、100、3.14、a、true、falseはすべてリテラル定数です。
定数は、次の6つのカテゴリに分類できます
。1。文字列定数:「helloworld!」などの「」で囲まれます。
2.整数定数:直接書き込まれる数値:100など。3
。浮動小数点定数:直接書き込まれる小数:3.14など
。4。文字定数:''で囲まれた単一の文字。 'など
5.ブール定数:trueとfalseのみ
6.空の定数:null

2:データ型

まず、データ型とは何かを理解しましょう。
データ型は固定サイズのメモリのエイリアスです。
~~変数を定義するときは、変数が保持するさまざまな値に応じて定義する適切な型を選択する必要があります。将来的には、Javaでは、データ型は主に基本データに分けられます。2があります。
基本データ型には、整数、浮動小数点、文字、ブールの4種類があります。8種類:バイト、短整数、整数、長整数、単精度浮動小数点、倍精度浮動小数点、文字、ブール値。以下に示すように:



ここに画像の説明を挿入

注:
1。16ビットシステムでも32ビットシステムでも、intは4バイトを占めます。32ビットシステムでも64ビットシステムでも、longは8バイトを占めます
。2。整数と浮動小数点は両方とも
3です。整数型はデフォルトでintであり、浮動小数点型はデフォルトでdoubleです
。4。文字列は参照型です。補足
:バイトはコンピュータのスペースを表すための基本単位です。コンピュータはデータを表すためにバイナリを使用します。8ビットは1バイト(バイト)。
その中の1KB = 1024Byte、1M = 1024KB、1G = 1024M、1T=1024G。

3:変数

3.1コンセプト

プログラムでは、定数に加えて、年齢、身長、成績、数学関数の計算結果など、一部の内容が頻繁に変更される場合があります。これらの頻繁に変更される内容については、Javaプログラムでは変数と呼ばれます。データ型は、さまざまな種類の変数を定義するために使用されます。

3.2構文形式

データ型変数名=初期値;

int a=10;
double b=3.14;

3.3整数変数

3.3.1整数変数の定義

//在定义时给出初值,在任何的系统下都占有4个字节.
int a=10;
//定义前没有给初始值,使用前必须设置初始值.
//范围:-2147483648 ~ 2147483647  (-2^31 --> 2^31-1)
int b;
b=10

3.3.2長整数変数の定義

//为了区分int和long类型,一般在long类型变量的初始值之后加L或l
//long在任何的系统下都占有8个字节.
//L更好区分一点.
//long的表示范围为:-2^63 - 2^63-1 
long a=	10;
long b=10L;
long c=10L;

3.3.3短整数変数の定義

//short表示的范围为:-32768~32767,-2^15 - 2^15-1 
//在任何的系统下都占有2个字节.
//short一般使用的比较少
short a=10;

3.3.4バイト変数:

//byte在任何的系统下都占1个字节
//byte的范围是:-128~127,-2^7 ~ 2^7-1
byte a=10;

3.3.5単精度浮動小数点

//float 在任何系统下都占用4个字节,一般在数字后加上f或者F.
//float 的范围是:-2^31 - 2^31-1
float num=1.0f;

3.3.6倍精度浮動小数点

//double在任何的系统下都占有8个字节.
//double的范围是:-2^63 - 2^63-1 
double a=1.0;
double b=2.0;
System.out.println(a/b);//输出0.5

double num=1.1;
System.out.println(num*num);//输出结果为:1.2100000000000002

3.3.7文字変数

//char占用2个字节,表示的范围是:-32768~32767,-2^15 - 2^15-1
//Java中使用 单引号+单个字母 的形式表示字符字面值
char c1= 'A';
char c2= '1';
//Java的字符型可以存放整型.
char c3= '牛';

3.3.8ブール変数:

/* 1.   Java的虚拟机规范中,并没有明确规定boolean占几个字节,
		也没有专门用来处理boolean的字节码指令,
		在Oracle公司的虚拟机实现中,boolean占用1个字节.
   2.boolean 类型的变量只有两种取值, true 表示真, false 表示假
   3.Java 的 boolean 类型和 int 不能相互转换~~~
     不存在 1 表示 true, 0 表示 false 这样的用法.*/
boolean a=true;
boolean b=false;

4.データ型変換と型昇格

4.1データ型変換

簡単に言えば、あるデータ型の変数を別のデータ型に変換することです。変換プロセスでは、特定のルールに従う必要があり、自由に変換することはできません。
基本的な考え方は、同じタイプのみを任意に変換でき、低レベルから高レベルへの変換は自動的に変換できますが、高レベルから低レベルへの変換を強制する必要があります。Javaでの型変換は、自動型変換(暗黙型変換、つまりスモール型->ラージ型)と強制型変換(明示型変換、つまりラージ型->スモール型)
の2つのカテゴリーに分けられます。

4.1.1自動型変換(暗黙的な型変換)

自動型変換とは、コードを処理する必要がなく、コードのコンパイル時にコンパイラーが自動的に処理することを意味します。

byte b=10;
int c=100;
c=b
System.out.println(c);
/*b是小类型,c大类型的,进行隐式类型转换,
  将小类型的byte自动转换为大类型的int进行赋值*/
//例子:
float f=13.14f;
double d=99.99;
d=f;
System.out.println(d);

4.1.2強制(明示的な型変換)

操作を行う場合、コードは特定の形式で処理する必要があり、自動的に完了することはできません。

byte b=10;
int c=100;
b=c;
/*
  此时代码会报错,因为b是byte型,是小类型的,而c是int型,相对与b来说是大类型的,
  当b=c时,相当于将大类型赋值给小类型,会出现数据的丢失,所以程序会报错.
  这个时候就需要强制类型转换.将b=c改为 b=(byte)c,程序就可以正常运行了;
*/
b=(byte)c;
System.out.println(b);
//例子:

float f=13.14f;
double d=99.99;
f=float(d);
System.out.println(f);

4.2タイププロモーション

異なるタイプのデータが相互に操作される場合、小さいデータタイプは大きいデータタイプにプロモートされます。

//例一:
byte b1=10;
byte b2=20;
int ret1=b1+b2;
System.out.println(ret1);  //30
byte ret2=b1+b2;//此行会报错:从int到byte会有数据的丢失
/*
   原因:在做加法运算时,b1,b2被提升为int类型了
   byte+byte===>int+int---->int
   解决方法:进行强制类型转换,把int型强转为byte型
   即:byte ret2=(byte)(b1+b2);
*/
byte ret2=(byte)(b1+b2);
System.out.println(ret2);
//例二:
byte ret3=10+20;//此行不会出错,编译通过.
System.out.println(ret3);
/*
	不会报错的原因:
	10+20===>int+int--->int.
	编译器在编译时,会直接计算10+20的结果
	相当于 byte ret3=30;
	30没有超过byte的取值范围,因此可以通过.
	但是在例一当中,b1,b2是变量,加完之后结果是否会超过byte的取值范围就不知道了.
*/

文字列変換:

String s1="hello";
String s2="1234";
System.out.println(s1);
System.out.println(s2);

String s3=" world!!!";
s1=s1+s3;
System.out.println(s1);//输出:hello world!!!

int a=1234;
//需求:将a转换为字符串类型
String s4=""+a;   //""为空字符串
System.out.println(s4);  //输出1234

String s5=String.valueof(a);
System.out.println(s5);  //输出1234
//需求:将数字类型字符串转换为整型数字
int b=Inteage.parseInt(s2);
System.out.println(b);  //输出1234	

おすすめ

転載: blog.csdn.net/weixin_47278183/article/details/119713721