Java基本数据类型
Java数据类型
Java中的数据类型分为两类,分别是基本数据类型和 引用数据类型,这里先介绍基本数据类型
基本数据类型分类
Java中的基本数据类型分为三类,数值型,布尔型和字符型
数值型数据分为两类,分别是整数类型和浮点数类型
整数类型的默认值为0
浮点数类型的默认值是0.0
布尔型数据的默认值是false
字符型数据的默认值是'\u0000'
整数类型包含四种数据类型,按数据储存范围从小到大依次为byte,short,int,和long
浮点类型包含两种数据类型,按数据储存范围从小到大依次为是float和double
int型的保存范围为-2147483648~2147483647
boolean型的保存范围为true和false
如何给一个变量赋值
数据类型 变量名称 = 内容 ;
例子
int num = 10 ;
boolean flag = true ;
double number = 10.1 ;
char c = '葱' ;
String str = "葱头哥" ;
整数类型
整数类型的默认类型为int型
数据溢出现象与解决方法
观察数据溢出现象
public class JavaDemo {
public static void main ( String args [] ) {
int max = 2147483647 ;// 把int类型的最大数值赋值给变量max
int min = -2147483648 ;// 把int类型的最小数值赋值给变量min
System.out.println( max + 1 ) ;
System.out.println( min - 1 ) ;
}
}
/* 以下为代码执行后输出的内容
* -2147483648max + 1 的结果
* 2147483647min - 1 的结果
*/
观察后可发现,int类型的最大数值加一,结果为int类型的最小数值
int类型的最小数值减一,结果为int类型的最大数值
这种现象就是数据溢出
数据溢出解决方法
方法一将int型常量转换成long型常量,在数字后加"L"或者"l"即可,建议加"L",因为"l"和数字"1"容易混淆
方法二将int型变量转换成long型变量,使用"(long) 变量名称"即可
方法一代码如下所示
public class JavaDemo {
public static void main ( String args [] ) {
int max = 2147483647 ;
int min = -2147483648 ;
System.out.println( max + 1L ) ;
System.out.println( min - 1l ) ;
}
}
/* 以下为代码的输出结果
* 可以观察到在常量1后加上"L"或者"l"后
* 输出的结果就是正确结果
* 2147483648
* -2147483649
*/
方法二代码如下所示
public class JavaDemo {
public static void main ( String args [] ) {
long max = 2147483647 ;
long min = -2147483648 ;
System.out.println( max + 1 ) ;
System.out.println( min - 1 ) ;
}
}
/* 以下为代码执行后输出的结果
* 2147483648
* -2147483649
* 观察后发现本次计算的结果正确
*/
浮点类型
Java中任意一个小数常量对应的类型为double,所以在定义浮点型常量的时候尽量定义为double
如果想要定义一个float变量,必须进行强制转换,否则程序将会报错
public class JavaDemo {
public static void main ( String args [] ) {
float x = 10.1 ;
System.out.println( x ) ;
}
}
程序执行后报错:
JavaDemo.java:3: 错误: 不兼容的类型: 从double转换到float可能会有损失
float x = 10.1 ;
^
1 个错误
正确的定义float型变量的操作如下
public class JavaDemo {
public static void main ( String args [] ) {
float x = (float) 10.1 ;
float y = 111.2F ;
System.out.println( x ) ;
System.out.println( y ) ;
}
}
执行结果:
10.1
111.2
整型数据不能整除时,使用int型数据输出的结果会抹去小数位,想要得到准确数据,需要把两个中至少一个强制转换为浮点型,则输出的结果为浮点型数据
public class JavaDemo {
public static void main ( String args [] ) {
int x = 10 ;
int y = 3 ;
System.out.println( x/y ) ;
}
}
执行结果:
3
结果为整形数据,并非准确计算结果
public class JavaDemo {
public static void main ( String args [] ) {
int x = 10 ;
int y = 3 ;
System.out.println( (double) x/y ) ;
System.out.println( x/ (float) y ) ;
}
}
执行结果:
3.3333333333333335
3.3333333
结果为double型数据和float型数据,我们发现计算结果同Python一样存在不确定尾数
var关键字的使用
Java为静态语言,为了迎合市场需求,JDK1.10后Java出现动态语言支持
例子
public class JavaDemo {
public static void main ( String args [] ) {
var x = 10 ;
var y = 3.14 ;
System.out.println( x ) ;
System.out.println( y ) ;
}
}
字符类型
字符型变量的定义
char 变量名称 = '字符' ;
public class JavaDemo {
public static void main ( String args [] ) {
char c = '吴' ;
System.out.println( c ) ;
}
}
英文字母和阿拉伯数字的Unicode编码范围
Java中的所有字符都使用的十六进制的Unicode编码,此类编码可以表示所有字符,包括中文字符
大写字母 65('A')~90('Z')
小写字母 97('a')~122('z')
数字 48('0')~57('9')
char与int的相互转换
char与int型常量的强制转换,可利用此特点进行大小写字母的转换
public class JavaDemo {
public static void main ( String args [] ) {
int num = (int) 'a' ;
char c = (char) 65 ;
char C = (char) (65 + 32) ;
char Z = (char) ((int) 'z' +32) ;
System.out.println( num ) ;
System.out.println( c ) ;
System.out.println( C ) ;
}
}
执行结果:
97
A
a
定义中文字符的乱码问题解决方法
定义中文字符编译时会出现如下错误,可以在Javac 后跟上 -encoding UTF-8即可解决
C:\Users\86131\Desktop>javac JavaDemo.java
JavaDemo.java:3: 错误: 编码 GBK 的不可映射字符 (0xB4)
char c = '鍚?' ;
^
JavaDemo.java:3: 错误: 未结束的字符文字
char c = '鍚?' ;
^
JavaDemo.java:3: 错误: 未结束的字符文字
char c = '鍚?' ;
^
3 个错误
C:\Users\86131\Desktop>javac -encoding UTF-8 JavaDemo.java
C:\Users\86131\Desktop>java JavaDemo
吴
注意字符与字符串的区别
C:\Users\86131\Desktop>javac -encoding UTF-8 JavaDemo.java
JavaDemo.java:3: 错误: 未结束的字符文字
char c = '吴安师大' ;
^
JavaDemo.java:3: 错误: 未结束的字符文字
char c = '吴安师大' ;
^
JavaDemo.java:3: 错误: 不是语句
char c = '吴安师大' ;
^
3 个错误
布尔类型
布尔型是一种逻辑结果,主要储存两类数据:true和false
例子
public class JavaDemo {
public static void main ( String args [] ) {
boolean flag = true ;
if ( flag ) {
System.out.println("判断结果为true时执行此语句") ;
}
}
}
执行结果:
判断结果为true时执行此语句
字符串
字符串的定义
String 变量名称 = "字符串" ;
例子
public class JavaDemo {
public static void main ( String args [] ) {
String str = "这是一个字符串" ;
System.out.println(str) ;
}
}
执行结果:
这是一个字符串
字符串的连接
public class JavaDemo {
public static void main ( String args [] ) {
int x = 10 ;
int y = 11 ;
boolean flag = true ;
String str = "结果为" + x + y ;
String str1 = "结果为" + (x + y) ;
String str2 = "结果为:" + x * y ;
String str3 = "结果为" + flag ;
String str4 = "结果为" + flag + x ;
System.out.println( str ) ;
System.out.println( str1 ) ;
System.out.println( str2 ) ;
System.out.println( str3 ) ;
System.out.println( str4 ) ;
}
}
执行结果:
结果为1011
结果为21
结果为:110
结果为true
结果为true10
java中没有把字符串*N次等于把字符串赋值N遍的操作,这样操作在Java中会报错
对于上面代码执行结果的分析
字符串与整数或者浮点数进行加法运算,输出结果为字符串
若整数之间用括号先进行数值运算,则数值运算后的结果与原字符串相加产生新字符串
若表达式中存在乘法运算,则按四则运算顺序,先进行乘法运算,而后进行字符串连接运算
字符串与布尔型数据相加,结果为字符串
布尔型数据不可与整型或者浮点型数据进行运算