5.标识符、基本数据类型
一、标识符注意点
- 所有标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
 - 首字符之后可以是字母(A-Z或者a-z),美元符($)、或者下划线(_)或数字的任何字符组合
 - 不能使用关键字作为变量名或方法名
 - 标识符是大小写敏感的
 - 不建议使用拼音和中文
 
二、八大基本数据类型:
- 
整型:
- byte :8位,数据范围是-128~127
 - short :16位,数据范围-32768-32767
 - int :32位,数据范围-231-231-1
 - long :64位,数据范围-263-263-1
 
扩展内容:
java中各进制的表示:
- 
二进制:由0、1组成,以0b开头。
 - 
八进制:由0~7组成,以0开头。
 - 
十六进制:由09和AF组成,大小写均可,以0x开头。
 
 - 
浮点型:
- float :32位,数据范围在3.4e-45~1.4e38,赋值需加上F或f
 - double :64位,数据范围在4.9e-324~1.8e308,赋值可以加d或D也可以不加
 
扩展内容:
- 
java对于金额的存储,使用哪一种数据类型?
答:不能使用float和double,因为这两个数据类型都是浮点数,都有精度范围。例如某个浮点数经过了一系列的运算,本来应该是某个确定的值,但结算结果却不是。因为浮点型存在精度丢失的情况,多次运算会导致精度大量丢失,导致结果不准确。
解决:在程序中应该使用BigDecimal,在数据库中应使用Decimal。注意在给默认值的时候不用给null,应该给0.00,否则在加减等操作中,会带来转换的麻烦。
 - 
BIgDecimal常用方法:
public class Math { public static void main(String[] args){ BigDecimal a = new BigDecimal(16); BigDecimal b = new BigDecimal(25); //加法 -->41 BigDecimal add = a.add(b); System.out.println(add); //减法 -->-9 BigDecimal subtract = a.subtract(b); System.out.println(subtract); //惩罚 -->400 BigDecimal multiply = a.multiply(b); System.out.println(multiply); //除法 -->0.64 BigDecimal divide = a.divide(b); System.out.println(divide); 
 - 
字符型:
- char :16位,存储单个字符,通过单引号赋值
 
拓展内容:
- 所有字符的本质还是数字
 - 字符可以转换为数字,通过Unicode表,可以转换为对应的数字
 
int i = (int)'中'; System.out.println(i); //结果:20013- 转义字符
 
序号 转义字符 含义 ASCII码值(十进制) 1 \a 响铃(BEL) 007 2 \b 退格(BS) ,将当前位置移到前一列 008 3 \f 换页(FF),将当前位置移到下页开头 012 4 \n 换行(LF) ,将当前位置移到下一行开头 010 5 \r 回车(CR) ,将当前位置移到本行开头 013 6 \t 水平制表(HT) (跳到下一个TAB位置) 009 7 \v 垂直制表(VT) 011 8 \ 代表一个反斜线字符"" 092 9 ' 代表一个单引号(撇号)字符 039 10 " 代表一个双引号字符 034 11 ? 代表一个问号 063 12 \0 空字符(NUL) 000 13 \ddd 1到3位八进制数所代表的任意字符 三位八进制 14 \xhh 十六进制所代表的任意字符 十六进制 (注意区分,左手杠(/) 与 右手杠(\) ,此处不可互换) (\xhh :十六进制转义不限制字符个数,如:'\x000000000000F' == '\xF')  - 
布尔型:
- boolean :只有true和false
 
扩展内容:
boolean flag = true; if(flag==true){} if(flag){} //推荐写法 //less is more 
三、类型转换:
- 基本数据类型大小顺序:byte,shot,char-->int-->long-->float-->double
 - 运算中,不同类型的数据先转化为同一类型,然后进行运算。
 - 强制类型转换:(类型)变量名。由数据类型较大的转换位数据类型较小的。
 - 自动类型转换:由数据类型较小的转换位数据类型较大的。
 - 注意点:
- 不能对不布尔类型进行转换。
 - 不能把对象转换为不相干的类型。
 - 在高容量转换为低容量时,需要强制转换。
 - 转换时可能存在内存溢出或丢失精度问题。
 
 
char a = 'a';
int b = a+1;
System.out.println(b);		//输出98
System.out.println((char)b);	//输出b
int money = 100_00_00_000;
System.out.println(money);  //输出:100000000
int month = 12;
int total = money*month;
System.out.println(total);  //输出:-884901888,溢出了。
long total2 = money*month;  //由于两个变量都是int类型,计算的时候已经溢出了。
System.out.println(total2);    //输出:-884901888,溢出了。
long total3 = money*(long)month;
System.out.println(total3);     //输出:12000000000
注:
鸣谢《狂神说》,免费java学习地址:https://www.kuangstudy.com/
                    
                
                
            
        
浙公网安备 33010602011771号