Java基础自学记录二

Chapter2

此文为笔者个人笔记,如有错误还请指出

变量

变量三要素:类型+名称+值例如int a=1

变量表示内存中的一个存储区域,需要先声明再使用

变量在同一作用域不能重名

不同数据类型占用字节大小:(1个字节8bit)

  • int 4个字节 -231~231-1(-2147483648~2147483647)
  • double 8个
  • float 4
  • byte 1 -128~127
  • short 2 -215~215-1
  • long 8 -263~263-1
  • char 2
  • boolean 1

程序中加号+的使用

给出如下代码:

public class useAdd(){
    public static void main(String[] args){
        System.out.println(100+98);
        System.out.println("100"+98);
        System.out.println(100+3+"hello");
        System.out.println("hello"+955+699);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxVgH4Lc-1664367743717)(D:\Typora\typora-user-images\image-20220920201818286.png)]

可以看到,均能与字符串拼接,运算顺序从左到右

数据类型

java是强类型语言,必须指定类型且要根据类型分配空间

基本数据类型:byte boolean char short int float double long

引用数据类型:class interface 数组[]等,后面会详细介绍

整数类型

byte short int long

无论在什么操作系统下占用存储空间均相同(保证了可移植性)

Java默认整数常量为int类型,声明long类型需要在末尾加"L"或者"l"

浮点类型

Java的浮点常量默认为double类型,如果要声明float变量,需要后面加"f"或者"F"

我们一般用精度更高的double

public class FloatDetail{
    public static void main(String[] args){
        float num1 = 1.1f; //正确的
        float num2 = 2.7; //错误的,加f
        double num3 = 3.0f; //正确的
        double num4 = 8.1; //正确的
        double num5 = .123;//表示0.123
        double num6 = 5.12e-2; //5.12*10^-2
        System.out.println(num6);//0.0512
        System.out.println(num2==num4/num3);//输出false
        System.out.println(num2);//2.7
        System.out.println(num4/num3);//2.6999999999999997
    }
}

最后输出false (算不准)当我们使用小数判断是一定要小心 一般用两个浮点数的差值的绝对值在某个精度范围计算(之前C++栽过跟头)

字符类型

char 本质为整数,在输出时,是unicode码对应的字符,要输出字符对应编码,可以(int)进行强制类型转换

几种字符编码表:

  • ASCII编码表由一个字节表示,一共一个128个字符
  • Unicode编码表是固定大小的编码,用两个字节来表示字符,字母与汉字均占用两个字节的空间,较浪费空间
  • utf-8编码表,大小可变的编码,范围广,字母一个字节,汉字三个字节
  • gbk可以表示汉字,范围广,字母一个字节,汉字两个字节
  • gb2312可以表示汉字,但gb2312<gbk

布尔类型

占用一个字节,一般用于流程控制

基本数据类型的转换

自动类型转换:变量在进行赋值或者运算时,精度小的类会自动转换为精度大的类。

规则:

  • char->int->int->long->float->double
  • byte->short->int
  • 有多种类型数据混合运算时,先将它们都转换为容量最大的数据再进行计算
  • byter short char之间不自动转换,相互之间可以进行运算,但是会转换为int类型
  • boolean不参与转换

注意一个易错点:

public class AutoConvert{
    public static void main(String[] args){
        byte b1 = 10;
        byte b2 = 14;
        byte b3 = b1 + b2;//不可以的,byte short char之间进行运算后都会转化为int
        boolean ber = true;
        int num = ber;//错误的,boolean不参与转换
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nL2OPA8Y-1664367743718)(D:\Typora\typora-user-images\image-20220921183801944.png)]

强制类型转换

可以将大的数据类型转换为容量小的数据类型,会导致数据精度损失

示例

public class ForceConvert{
    public static void main(String[] args){
        int a = 1000;
        byte b = (byte)a;
        System.out.println(b);//输出-24(数据溢出)
    }
}

注意:只对最近的操作数有效:比如说 int a = (int)10 * 3.5;只能使得10为int类型,但是int a = (int)(10 * 3.5);可以

数据类型转换练习题

public class ConvertTest{
    public static void main(String[] args){
        short s = 12;
        s = s-9;//能过编译吧

        byte b = 10;
        b = b + 11;//y
        b = (byte)(b+11);//y

        char c = 'a';
        int i = 16;
        float d = .314f;
        double result = c+i+d;
        
        byte = 16;
        short s = 14;
        short t = s+b;//x
    }
}

基本数据类型和字符串间的转换

基本数据类型->String 数据+""就能转换…之前都不知道

String->基本数据类型 需要用到包装类

用包装类调用parsexxx方法

代码示例如下

字符串转换成字符的含义是取到字符串的第一个字符(important)

public class ConvertToString{
    public static void main(String[] args){
        int n1 = 100;
        float f1 = 10.45f;
        boolean b1 = true;
        String s1 = n1+"";
        String s2 = f1+"";
        String s3 = b1+"";
        System.out.println("s1:"+" "+s1);
        System.out.println("s2:"+" "+s2);
        System.out.println("s3:"+" "+s3);
        int num = Integer.parseInt(s1);
        boolean b = Boolean.parseBoolean(s3);
        String s5 = "hello";
        System.out.println(s5.charAt(1));//e
    }
}

一些细节

String s1 = "hello";
int a = Integer.paeseInt(s1);//这里编译不会报错,运行会抛出异常,不要写这样的代码

Java API文档

Java8中文API文档:Java 8 中文版 - 在线API中文手册 - 码工具 (matools.com)

API结构

Java8

包1,2,3…

接口
异常
  • 字段
  • 构造器
  • 成员方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值