浮点型
浮点型可分为float,double两种类型
1.float
类型关键字:float
内存存储占用4个字节,32位
存储数据范围:1.4E-45~3.4028235E38
注意:
Java中小数默认是double类型,赋值时要加个F或者f,如:
float f = 175.5;//声明一个float类型变量
System.out.println(f);//编译的时候报 错误: 不兼容的类型: 从double转换到float可能会有损失
float f1 = 175.5f//正确形式
2.double
类型关键字:double
内存存储占用8个字节,64位
存储数据范围:4.9E-324~1.7976931348623157E308
字符型
类型关键字:char
内存存储占用2个字节,16位
存储数据范围:0~65535(存储数字)
Java中使用char类型存储单个字符,jvm对字符采用Unicode无符号进行编码。
char类型可以存储数字0~65535范围内的非负数。
char类型可以与int类型兼容。
char ch = ' ';
ch = 97;
System.out.println(ch);//输出一个a 说明a在计算机中是以97这个值来存储的
但是直接把int类型的变量赋值给char类型的变量是不行的,如:
int num = 100;
char c;
c = num;
System.out.println(c);//编译时报错:错误: 不兼容的类型: 从int转换到char可能会有损失
因为变量的值是在运行中才会确定的,int类型的精度大于char类型,所以会报错。
解决这个问题就要用到强制转换,如:
char ch;
int num = 5000;
ch3 = (char)num;
System.out.println(ch);
这样就解决了编译时报错的问题。
布尔型
类型关键字:boolean
内存存储占用4个字节,32位
存储数据范围:true和false
自然转换
由低精度向高精度数据类型转换称为自然转换,也就是存储范围小的变量赋值给存储范围大的变量。
数值型的变量存储的范围从小到大的排序是byte->short->int->long->float->double
强制转换
由高精度向低精度数据类型转换称为强制转换,也就是存储范围大的变量赋值给存储范围小的变量。
表现形式是在值的前面加(要转的数据类型) 如:
double d = 255.50;
float f = 254.50f;
long l = 80000;
int i = 56;
f = (float)d;//强制转换
l = (long)f;//强制转换
i = (int)l;//强制转换
Java中的运算符分为赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、特殊运算符这几种。
1.赋值运算符
常见的有:=、+=、-=、*=、/=、%=
2.算术运算符
常见的有:+、-、*、/、%、++、--
其中++、--称为自增、自减运算符,它的计算方式与它所在的位置有关,
++运算符在变量后是先与其他变量进行运算再自增,如:
int n = 5;
int m = 6;
int sum;
sum = n++ + m;//++在变量后面,当n与m相加的时候是先拿n的值5与m的值6相加,然后n再自加1等于6;
System.out.println(sum);//输出11
System.out.println(n);//输出6
++运算符在变量前是先自增再与其他变量进行运算,如:
int n = 5;
int m = 6;
int sum;
sum = ++n + m;//++在变量前面,当n与m相加的时候是先n加1再拿n的值6与m的值6相加;
System.out.println(sum);//输出12
System.out.println(n);//输出6
--的运算与++同理。
(1)基本数据类型都有包装类
byte--Byte
short--Short
int--Integer
long--Long
float--Float
double--Double
学习了MAX_VALUE、MIN_VALUE、toBinaryString()的使用
(2)控制台输入Scanner
使用Scanner要先import java.util.Scanner包
然后定义 Scanner input = new Scanner(System.in);
就可以用 input.next() 、input.nextInt()、input.nextFloat()等方法输入各种值了。
(3)强制转换时范围溢出
比如int类型的值129强制转换到byte类型,byte类型范围是到127,程序就会输出-127
int num2 = 129;
byte by = (byte)num2;
System.out.println(by);//输出-127;
那么这个-127是怎么来的呢?
首先计算机存储数据采用的是二进制补码的形式;一个正数的原码、反码、补码都是一样的。一个负数的补码是它的反码 +1,反码是原码的取反。
129的二进制是10000001,转成byte是8位,截取8个,原码的表现形式是首位是符号位1表示负数0表示正数,所以
1 0000001是个负数
1 0000001它的反码就是符号位不变其余取反1 1111110 补码就是符号位不变其余+1 1 1111111
1111111转成10进制就是127加上符号位就是-127。
记录结束。。。。。