5.标识符、基本数据类型

一、标识符注意点

  1. 所有标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  2. 首字符之后可以是字母(A-Z或者a-z),美元符($)、或者下划线(_)或数字的任何字符组合
  3. 不能使用关键字作为变量名或方法名
  4. 标识符是大小写敏感的
  5. 不建议使用拼音和中文

二、八大基本数据类型:

  1. 整型:

    1. byte :8位,数据范围是-128~127
    2. short :16位,数据范围-32768-32767
    3. int :32位,数据范围-231-231-1
    4. long :64位,数据范围-263-263-1

    扩展内容:

    java中各进制的表示:

    1. 二进制:由0、1组成,以0b开头。

    2. 八进制:由0~7组成,以0开头。

    3. 十六进制:由09和AF组成,大小写均可,以0x开头。

  2. 浮点型:

    1. float :32位,数据范围在3.4e-45~1.4e38,赋值需加上F或f
    2. double :64位,数据范围在4.9e-324~1.8e308,赋值可以加d或D也可以不加

    扩展内容:

    1. java对于金额的存储,使用哪一种数据类型?

      答:不能使用float和double,因为这两个数据类型都是浮点数,都有精度范围。例如某个浮点数经过了一系列的运算,本来应该是某个确定的值,但结算结果却不是。因为浮点型存在精度丢失的情况,多次运算会导致精度大量丢失,导致结果不准确。

      解决:在程序中应该使用BigDecimal,在数据库中应使用Decimal。注意在给默认值的时候不用给null,应该给0.00,否则在加减等操作中,会带来转换的麻烦。

    2. 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);
      
  3. 字符型:

    1. char :16位,存储单个字符,通过单引号赋值

    拓展内容:

    1. 所有字符的本质还是数字
    2. 字符可以转换为数字,通过Unicode表,可以转换为对应的数字
    int i = (int)'中';
    System.out.println(i);  //结果:20013
    
    1. 转义字符
    序号 转义字符 含义 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')
  4. 布尔型:

    1. boolean :只有true和false

    扩展内容:

    boolean flag = true;
    if(flag==true){}
    if(flag){}  //推荐写法
    //less is more
    

三、类型转换:

  1. 基本数据类型大小顺序:byte,shot,char-->int-->long-->float-->double
  2. 运算中,不同类型的数据先转化为同一类型,然后进行运算。
  3. 强制类型转换:(类型)变量名。由数据类型较大的转换位数据类型较小的。
  4. 自动类型转换:由数据类型较小的转换位数据类型较大的。
  5. 注意点:
    1. 不能对不布尔类型进行转换。
    2. 不能把对象转换为不相干的类型。
    3. 在高容量转换为低容量时,需要强制转换。
    4. 转换时可能存在内存溢出或丢失精度问题。
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/

posted @ 2022-01-14 09:47  西敲  阅读(221)  评论(0)    收藏  举报