Day05——Java基础知识

Day05——Java基础知识

注释

  1. 单行注释:只能注释当前行,以//开始,直到本行结束

    //单行注释
    
  2. 多行注释:注释一段文字

    /*多行注释
    注释并不会被计算机编译
    注释是为了提高程序代码的可读性*/
    
  3. 文档注释:(又称 说明注释)用于生产API文档,配合JavaDoc。

    说明注释在程序中嵌入关于程序的信息。可以使用 JavaDoc 工具软件来生成信息,并输出到HTML文件中,使你更加方便的记录你的程序信息。

    以**/**** 开始,以***/**结束。

    /**
    * 这个类演示了文档注释
    * @author 明天也有晚霞嘛     //作者
    * @version 1.8           //使用版本
    */
    

    关键字

    百度百科——关键字

关键字

标识符

类名、变量名以及方法名都被称为标识符。

  • 所有的标识符都应以大小字母(A-Z 或 a-z)、美元符号($)、或者**下划线(_)**为开始

  • 不能使用关键字作为 变量名 或 方法名。

  • 标识符区分大小写。(即 Man 和 man 不同。)

    JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。

数据类型

Java的数据类型分为两大类:

  • (八大)基本数据类型(Primitive Type)

    1. 整数类型:
    • byte 占1个字节,范围[-128,127]

      • short 占2个字节,范围2^15 [-32678,32767]

      • int 占4个字节,范围2^31 [-2147483648,2147483647]

      • long 占8个字节,long类型要在数字后加L,范围[-263,263 -1]

    1. 浮点类型:

      • float 占8个字节,float类型要在数字后加F

      • double 占8个字节

        Java语言的整型常数默认为int型,浮点数默认是Double

    2. 字符类型:

      • char 占2个字节(单字符)

        字符串要用String(类)来定义

    3. boolean类型:

      • boolean 占1(true、false)
  • 引用数据类型(Reference Type)

    1. 类(class)
    2. 接口
    3. 数组

1B(byte,字节)=8bit(位)


整数拓展

  1. 二进制:0b开头,0b101=5;

  2. 八进制:0开头,010=8;

  3. 十六进制:0x开头,0x10=16; 0~9 A~F

    浮点拓展

    ​ 浮点数一般都存在舍入误差,无法精确表示,其结果只能是接近。

  • 最好完全避免使用浮点数比较 !

    ​ 如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

​ Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数 值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。

字符型拓展

​ 单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示一个字符串。

​ Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符。

​ Unicode具有从0到65535之间的编码,他们通常用从’u0000’到’uFFFF’之间的十六进制值来表示(前缀为 u表示Unicode)

  • 转义字符

    1. \b:退格
    2. \n:换行
    3. \r:回车
    4. \t:制表符(tab)
  • String类,其实是字符序列(char sequence)。

    //代码1
    String sa=new String("Hello world");
    String sb=new String("Hello world");
    System.out.println(sa==sb); // false
    //代码2
    String sc="Hello world";
    String sd="Hello world";
    System.out.println(sc==sd); // true
    
    
    • 引用数据类型 比较 地址值,基本数据类型 比较 数值。
    • JVM为了提升性能和减少内存开销,避免字符串的重复创建,维护了一块特殊的内存空间——字符串实例池

    先看代码二中 例String str = “test”;

以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,

String sc=“Hello world”;字符串实例池中没有"Hello World"对象。

如果不存在,则会在实例池中创建"test"对象,并把该对象的地址返回给str。

不存在"Hello World"对象,因此该行代码会在实例池中创建"Hello World"对象,并把该对象的地址返回给sc。

如果存在,直接把实例池中"test"的地址返回给str。

String sd=“Hello world”;

此时字符串实例池中存在"Hello World"对象,直接把实例池中"Hello World"的地址返回给sd。

因而,此时sc与sd地址指向实例池中同一对象(地址)(引用数据类型String 比较 地址值),sc==sd成立。

​ 而在代码一中 例String str =new String(“test”);

以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,

String sa=new String(“Hello world”);字符串实例池中没有"Hello World"对象。

​ 若不存在则会在实例池中创建"test"对象,同时在中创建"test"这个对象,然后将中的这个对象的地址返回赋给引用str。

不存在"Hello World"对象,因此该行代码会在实例池中创建"Hello World"对象,同时在中创建"Hello World"这个对象,然后将中的这个对象的地址返回赋给引用sa。

​ 若实例池存在则直接在中创建"test"这个对象,然后将中的这个对象的地址返回赋给引用str。

String sb=new String(“Hello world”);

​ 此时字符串实例池中存在"Hello World"对象,直接在中创建"Hello world"这个对象,然后将中的这个对象的地址返回赋给引用sd。

​ 此对象为sb在中新建的第二个"Hello world"对象,与sa在中创建的对象不同。

​ 因而,此时sa与sb地址指向中不同对象(地址)(引用数据类型String 比较 地址值),sa==sb不成立。

  • 详细请见 String与new String()的区别

    布尔类型拓展

    boolean类型占一位(bit),有两个值,true和false,

    不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。


类型转换

  • 自动类型转换:低–>高
  • 强制类型转换:高–>低

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

运算时,从低级到高级自动类型转换

------------------------------------>byte,short,char> int> long> float> double

【注】转换过程中可能导致溢出或损失精度,例如:

int i =128;
byte b = (byte)i;

因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

【注】浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

(int)23.7 == 23;
(int)-45.89f == -45

【扩展】数字之间可以用下划线分割,例:

int num = 100_0000_0000;
System.out.println(num);	//1000000000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值