JAVA 基本数据类型 (续)
浮点数类型 :double float
浮点数: 数据在存储时候, 采用科学计数法存储数据,小数点会发生浮动(移动)现象, 称为浮点数
Java 采用 IEEE-754 标注存储 浮点数.
1.由于存储空间有限, 浮点数存储和运算有舍入误差, 不
能绝对精确存储数据.
2. 因为精度高, Java中浮点数的默认类型是double
3. double类型字面量的后缀D/d, float字面量的后缀F/f
4. 浮点数计算不精确, 计算结果存在舍入误差.
5. double (double float):双精度浮点数, 64位2进制, 有效
位数长, 精度高, 最常用!
double 的精度大约是float的两倍, 所以称为双倍精度的浮点数;float 浮点数, 单精度浮点数, 32位2进制, 有效位数短,精度不高, 不常用.
内联代码片
// An highlighted block
package day02;
public class Demo01 {
public static void main(String[] args) {
/** double 类型演示 */
double d = 12.3;
System.out.println(d);
d = 9883771882377282888378.1;
System.out.println(d);
System.out.println(d);
//小数点向右移 动16位 double pi =3.1415926535897932384626; //double float fpi = 3.1415926535897932384626F;
//double System.out.println(pi);//double 精确 度高 System.out.println(fpi);//float精度 低
double x = 2.6;
System.out.println(x-2.0); //浮点数运 算存在舍入误差
}
}
//boolean 布尔类型
//用于表示逻辑判断结果, true表示成立, false表示不成立.
//boolean只有两个值!
char 字符类型: 存储字符
用于存储一个Unicode字符
unicode 字符码点范围: 0 ~ 1114111
Unicode 最新标准 Unicode 14.0
总计 144,697 字 符.
- Unicode 0 ~ 65535 称为 BMP, 基本多语言平面,
- 编码了最常用的文字字符: 中文\英文\日文\法文\韩 文 …
- Unicode 0~127 与 ASCII标准一致.
- 16位2进制, 是一个整数, 范围0~65535, 存储的是字符
的编码,显示时候, Java的API会将字符编码, 翻译为对应的字形
字符字面量, 使用一对单引号, 中间只能写一个字符
特殊字符使用转义字符书写
换行字符 ‘\n’
TAB 字符 ‘\t’
单引号 ‘’’
双引号 ‘"’
斜线 ‘\’
内联代码片
package day02;
public class Demo03 {
public static void main(String[] args) {
/** char字符类型
* - 字符类型字面量, 单引号, 中间一个字符
* * - 字符类型存储的是字符的编码 ,是一个整 数!!!
* * - 直接输出时候 println(c) 时候, Java的API println()
* * 会根据字符的编码, 找到字形, 然后输出 了字形
* */
char c = 'A';
System.out.println(c); //根据编码, 找到字形A, 然后再输出 //字符类型实际存储了一个字符的unicode编码 System.out.println((int)c); // 65 是 A 的编码
c = '中';
System.out.println(c); //中, 根据编码, 找到字形中, 再输出 System.out.println((int)c); //中 Unicode 20013
//Java 中字符存储是一个字的Unicode编码 c = '京'; System.out.println(c);
System.out.println((int)c);
c = '亭';
System.out.println(c);
System.out.println((int)c);
c = '亮';
System.out.println(c);
System.out.println((int)c);
c = '刘';
System.out.println(c);
System.out.println((int)c);
//字符是一个数! 可以直接赋值字符的编码!
c = 20113;
System.out.println(c); System.out.println((int)c);
c = 65; System.out.println(c);
字符串和字符的区别
“中” 和 ‘中’ 的区别
“中” 字符串
使用双引号作为定界符
字符串中可以写 0 ~ n 个字符, 最多2147483647个
字符串底层存储了一组字符
- 字符串是对象类型String,底层是一个char数组
‘中’ 字符,使用单引号作为定界符,只能写一个字符,
字符本质是一个数字,字符是基本类型 char - 使用字符串更加方便, 如果需要处理单个字符时候, 再使
用字符! - 自动类型转换: 小范围数据类型到大范围数据类型,可
以进行自动类型转换, 没有转换风险, 数据类型会转换
成功.强制类型转换: 大范围类型到小范围类型的转换, 如果数
值在小范围之内, 会成功转换, 如果数值超过小范围, 则会
出现溢出或者精度损失问题.
内联代码片
package day02;
public class Demo05 {
public static void main(String[] args) {
/** 基本数据类型转换 */
//自动类型转换: 小范围类型赋值给大范围类型
byte b = 120;
short s = b; // 自动的将byte类型转换为 short类型System.out.println(s);
// 强制类型转换: 大范围类型赋值给小范围类型
// - 在小范围之内, 不会发生损失 s = 88;
//short 类型变量, 值88在byte范 围之内
b = (byte)s;
// (byte) 强制类型转换运 算符, 把数据s转换为byte类型 System.out.println(b); //88
// - 在小范围之外, 会发生溢出!
s = 389;//short 类型变量, 值389超过 byte范围
b = (byte)s; //发生溢出, 结果没有意义 System.out.println(b);
//short <---> int
short ss = 23920;
int i = ss; //自动类型转换
System.out.println(i);
//范围内的强制类型转换,转换以后数值不变
i = 9912;
ss = (short) i;
System.out.println(ss);
//超范围强制类型转换(风险情况),会溢出 i = 2323222;
ss = (short) i;
System.out.println(ss);
//浮点数转换为整数会发生小数被截断,或者 溢出
double d = 38889.89;
int n = (int)d;
System.out.println(n);
}
}
运算符
Java 提供丰富的运算符
- 数学运算符
- 自增\自减运算
- 赋值运算
- 复合赋值运算
- 比较运算符
- 逻辑运算
- 取成员运算
数学运算符
运算规则和数学课的运算规则基本一致.
同种类型参与运算, 得到同种类型的结果
- 如果参与运算的类型不一致, 则先进行自动类型转
换, 转换后再计算 - 整数除法得到整数结果, 也就是整除
- 小于32位的整数, 按照int类型计算
- 计算时候如果超过范围会溢出, 溢出时候不会报错误
- 了解类型的范围, 计算之前预估结果, 避免溢出
- 同种类型参与运算, 得到同种类型的结果
##今日单词
double 双倍
float 浮动
true: 真的
false: 假的
boolean: 布尔
running: 正在跑, 正在运行
Variable ‘hi’ is never used : 变量’hi’从未被使用
Variable: 变量
never: 绝不, 绝无可能, 没戏
used: 使用过, 二手的
String: 字符串
count : 计数