Java变量&数据类型
一、常量
常量定义:程序中固定不变化的值。比如:整数1,2,3;小数5.98,等
常量的分类:
1.整数常量,所有整数(正整数,零,负整数)
2.小数常量。所有小数
3.布尔(boolean)类型常量。只有两个数值(true,false)
4.字符常量。将一个数字,字母或者符号用单引号( ’ ’ )标识。比如:‘A’,'中国’等。
5.字符串常量。将一个或者多个字符用双引号( " " )标识。比如:“中国”,"Hello"等。
6.null常量。只有一个数值:null
二、变量
1、变量的概念
变量表示内存中的一个存储区域,该区域用来不断的存放同一类型的常量类型,并可以重复使用这个区域。并且这个区域有自己的名称(变量名)和类型(数据类型)。
2.定义变量的格式
数据类型 变量名=初始化值;
注:= 是赋值符号
int a=(15*12);
//开辟一块变量名为a的取余,存放int类型的数据。并且将(15*12)的值赋给a区域,作为a的初始值
3.变量的命名
变量表示内存中的一个存储区域,这时候必须给这个区域起一个名字,才可以使用。当在给变量齐名的时候,同时需要见名知意。
驼峰命名法(见名知意):
比如:useName(用户名),studentId(学生Id)
变量命名规则:
- 变量命名只能由字母,数字,"_“和”$"符组成
- 变量命名不能由数字开头
4.变量的声明和初始化
-
声明并初始化
int a = 5;//声明整数变量a并赋值为5 System.out.println(a);
-
先声明后初始化
int c;//声明整数变量a c = 8;//变量a赋值为8 System.out.println(c);
-
声明多个,后初始化(变量用逗号隔开)
int d , e;//声明整数变量d,e d = 6;//变量赋值为6 e = 8;//变量e赋值为8 System.out.println(d); System.out.pringln(e);
三、数据类型
Java语言是强语言类型,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的空间。Java中根据语言的不同特点,数据分为不同的类型。
1. 整数类型
整数类型根据数据范围不同,需要用不同的关键字来表示。
整数类型:Byte,Short,Integer,Long
整数类型 | 最小值 | 最大值 |
---|---|---|
Byte | -2^7=-128 | 2^7-1=127 |
Short | -2^15=-32768 | 2^15-1=32767 |
Integer | -2^31=-2147483648 (Integer.MIN_VALUE ) | 2^31=2147483647(Integer.MAX_VALUE ) |
Long | -2^63=-9223372036854775808 | 2^63-1=9223372036854775807 |
byte a = 8;//定义一个byte类型的变量a
short b = 36;//定义一个short类型的变量b
int c = 5;//定义一个整型的变量f1
long d = 258;//定义一个long类型的变量
long d1 = 21474836475L;
//在long类型后面如果超出int范围,则需要在long类型后面加“L”或“l”(小写L)
2. 浮点类型(float、double)
double和float关键字在内存中开辟的空间可以存放小数。double开辟8个字节的空间,float开辟4个字节的空间;
double a = 3.14;//定义一个double类型的变量a
double b = 8.2;//定义一个double类型的变量b
Java浮点型常量默认的是double,则要声明一个float类型,则需在后面加上“f”或者“F”
float pi = 3.14F;//必须加上f或者F
注意:Java里只有浮点类型的变量才可接受科学计算式结果
3. 布尔类型boolean
boolean类型通常用于逻辑运算和程序流程控制。
boolean 类型数据只允许取值true
或 false
(不可以使用0 或非0的整数来代替true和false,区分于C语言)。
boolean a = true;
boolean b = false;
4. 字符型char
char用来存储通常意义上的字符,char占两个字节;范围是[0,65535],前256 (2^16)个表示 特殊字符 ,通常用单引号包裹''
。
1.采用Unicode编码格式,每个字符都有一个对一个的码
表现的形式char字符,本质上是int码(0到65535)
ASCII码(‘a’——97,‘A’——65,‘O’——48)
2.字符直接量必须放在单引号中,并且只有一个
3.特殊字符需要通过回文""来转义
char a = 'Hello';
System.out.println(a);
char ch = '\\';
//注意:在char字符中有一个并且只有一个字符才行,不能为空,但是可以为空字符
5. String类型
String不属于基本数据类型;但和字符有一定的联系。String是一个类(java语言里的最小单元),表示字符串;就是一串字符,字符串用""
包裹起来,连接字符用+
。
String str1 = "这是一个字符串";
String str2 = "这是一个字符串";
String str3 = new String("这是一个字符串");
String str4 = new String("这是一个字符串");
四、数据类型转换
1. 自动类型转换
当在存储整数数据时,Java中所有的 整数默认 都是int
类型的。所以在将**-128~127之间的数据存储在byte**类型空间中时,JVM会把这个int
类型的数据自动转换成byte
类型,然后存放在byte空间中。short同理。
// 类型转化
byte b = 2;// 隐式转化 int类型的2转化为byte类型 放在b中
short s = 34;// 同上
char ch1 = 65;// 隐式转化 int类型的65转化为char类型 放在ch1中
char ch2 = 'A';//
// 当数据超过需要隐式转化的类型时,会发生错误。
// char ch = 65536;X
// byte b2 = 128;X
// short s2 = 65536;X
// 基本数据类型转化的范围:byte,short,char--int--long--float--double
int i = 123;
long l = 6777;
l = i;
float f = 4.14F;
double d = f;
byte b = 2; //会自动把int类型2转为byte类型存放在b空间
short s = 234; //也会把int类型234转为short类型存放在s空间
// 当把一个int类型的数据存放在char类型空间中时,也会发生隐式类型转换.
char ch = 65; //这里会用int类型65,到编码表中查找对应的字符,然后将字符存放在ch空间中
char ch2 = 'A';//直接将A字符存放在ch2空间中
整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
容量小的类型可自动转换为容量大的数据类型(类型自动提升);byte,short,char → int → long → float → double
byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。
2. 强制类型转换
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符
,但可能造成精度的降低或溢出,使用时要格外注意。
强制转换格式:(数据类型)(被转数据);
long l = 123L;
int i = (int) l;
double d = 3.14;
float f = (float) d;
class Demo
{
public static void main(String[] args)
{
//隐式转换
byte b = 3;
int x = 4;
x = x + b;// b会自动提升为int类型进行运算。
//强制转换
byte b = 3;
b = b + 4;//报错
b = (byte)(b+4);//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。
}
}