day04_Java基础_数据类型

d04 Java基础(p21-p32)

1.注释

(1)新建一个空项目,进去后再new一个module,重命名之后得到包含src文件的目录。

image-20221116091525909

(2)因为一开始新建的是一个空的项目,所以需要设置项目结构

image-20221116201443393

一定要将上述步骤设置完,因为Java的运行需要配置好环境。

  • 单行注释://

    image-20221116202343807
image-20221116202438041 image-20221116202731556
  • 多行注释 /* 注释 */
  • 文档注释 JavaDoc /** 文档注释内容 */

2.标识符和关键字

代码中自动高亮的是Java中的关键字,系统已经预先定义好了,用于区分实现不同具体功能

image-20221117090343981

标识符注意点

image-20221117091231912

3.数据类型讲解

image-20221117094455221

强类型语言:强类型定义语言,要求十分严格,使得代码规范化,安全性高,但是速度会慢

Java、C++定义了某个变量是某种数据类型,不经过转换的话,它就永远是那种类型

--- 数据类型中除了基本类型(整数 -27~27 - 1、浮点数、字符类型、布尔值)外,都是引用类型。

image-20221117103216729

int 对应了Integer这个类 ;byte 对应了Byte这个类。

float类型的后面要加上F, long类型的后面要加上L

--- 什么是字节?

image-20221117103555326

位 是存储数据的最小单位 b

字节 是处理数据的基本单位 B

32位的扩内存只能扩到4GB,64位的可以扩到128GB;二者的寻址能力有很大差别。

4.数据类型及面试题(重要)

1)整数扩展

-- 整数拓展 进制表示问题 使用了前缀来进行区分

  • 二进制 0b 0b10 对应十进制的2

  • 十进制 正常表示即可 10

  • 八进制 0 010 对应十进制的8

  • 十六进制 0x 0x10 对应十进制的16


2)浮点数扩展

-- 浮点数拓展 银行业务怎么表示?

此种应用场景下使用float 和 double 是有问题的

float 能表现的字长是有限的 离散的,但是有些除法做完之后结果是无限的,故一般会存在舍入误差

所以结果是一个大约的结果,接近真实值但不等于真实值;所以最好避免浮点数之间的比较

-- BigDecimal 是一个Java写好的数学工具类,专门用于表示银行业务的数据表达


3)字符扩展

image-20221117201136845

强制转化可以将字符变成数字,因为所有的字符本质上还是数字。

char类型数据会涉及到编码问题Unicode

Unicode可以处理各种语言的文字,占用两个字节,最多可以表示65536个字符 0-65536

最早的Excel表格的长度就是2^16=65536

因为Unicode对应了一个编码表,每个不同的字符对应了相应的一个数字,表示范围U0000——UFFFF


4)转义字符

\ 反斜杠表示转义

  • \t t是tab,表示制表符

  • \n 换行

    image-20221117202240623

这里需要从内存地址的角度去分析

5)布尔值扩展

image-20221117202450814

布尔值进行判断时,默认是去判断是否为真。

5.类型转换

由于Java是强类型语言,所以进行某些运算的时候,需要用到类型转换

常用数据类型的字节容量从低到高的顺序如下

注意这里的long是64位,float是32位,小数的优先级一定大于整数

image-20221117202826217

运算中,不同类型的数据先转化为同一类型,然后再进行运算。

  • 强制类型转换 (高——>低) 工资由高变低员工被强制执行

    格式:(类型)变量名

  • 自动类型转换 (低——>高) 工资由低变高员工被自愿执行


注意事项:

-- 1.不能对布尔值进行转换:因为布尔值是以 位(bit) 作为单位的,而上述的这些数据类型的单位是字节(byte)

-- 2.不能把对象类型转化为不相关的类型

-- 3.将高容量转化为低容量时,强制转化;反之不需要动

-- 4.转化的过程中可能会存在内存溢出 或者 精度问题(小数)

​ 操作比较大的数的时候,尤其要注意内存溢出问题

  • Java中,数字之间可以使用下划线分割,同时这个下划线并不会被输出
image-20221117204942455

6.变量、常量、作用域

1)变量

变量:可以变化的量,用于操作内存中的数据;变量本质还是内存中的一块物理空间,但是该空间中放些什么东西是不确定的,虽然说这个内存的位置是定死的,但其中放些什么未知。电脑中的内存是天然存在的,也就是说物理地址是现实有的,但是我们人为地划分了其中的某些区域(并给它命了名),存放某些东西罢了。

image-20221117210338313
  • Java是强类型语言,每个变量都必须声明其类型

  • Java变量是程序中最基本的存储单元,其要素包括变量名变量类型作用域image-20221117205519781

  • 不建议在一行中定义多个值,会很麻烦!尽量一行只定义一个变量,保持较好的程序可读性

2)变量作用域

  • 类变量:和实例变量差不多,只是多加一个关键字 static,从属于类,随着类一起出现一起消失;为了避免麻烦,暂时可以在类变量前加上static这样方便调用,就不用去new(对象中学)

  • 实例变量:在方法外面,类的里面;从属于对象(类),通过这个类,才能去使用这个变量;声明该变量即可,不用初始化,就可以使用

    //实例变量:从属于对象;在方法体的外面,在类的里面;直接声明即可不用初始化,不进行初始化时输出的是这个数据类型的默认值 int--0    boolean--false  String--null除了基本类型,其余的默认值基本上都是null 空
    public class Demo01{
        String name;
    	int age;
        public static void main(String[] args){
            //局部变量:必须声明和初始化,可以直接在方法体中使用
            int i = 10;
            System.out.println(i);     
            // new Demo01()  new一个Demo01(),相当于拿到了Demo01这个类;然后再返回
            // 变量类型就是Demo01,因为除了基本类型,类型也可以是自定义的类型
            // 变量名demo01,变量名字有一个值,叫做new Demo01
            Demo01 demo01 = new Demo01();
            System.out.println(demo01.age);//拿到了Demo01就可以使用它了        
        }
    }
    

    局部变量:写在方法体里面的,有效期也只在该方法体{ }中,使用之前必须声明和初始化值

    image-20221117213755527

  • 类中可以定义 方法 属性(就是一种变量)

  • 注意事项:

    • 每个变量都有类型,可以是基本类型,也可以是引用类型
    • 变量名必须是合法的标识符
    • 变量声明是一条完整的语句,因此每个声明都必须以分号结束

3)常量

常量(Constant):初始化后就不能再改变的值,不会变动的量;可以理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变;常量名一般使用大写字符。关键字final,起到修饰符的作用。

//final 常量名 = 值;
final doouble PI = 3.14;

4)变量的命名规范

image-20221118103007150

posted @ 2022-11-18 20:14  努力生活的小林  阅读(32)  评论(0)    收藏  举报