【Java 入门】(二)基本数据类型

本文详细介绍了Java的八种基本类型及其包装类,包括它们之间的转换和强制类型转换。讨论了在数值运算中可能出现的精度溢出问题,并提供了使用BigDecimal解决精度问题的方法。此外,还讲解了基础类型的比较以及String类的常用API,如length、startsWith、indexOf、split和substring等。
摘要由CSDN通过智能技术生成

基本掌握

了解Java八种基本类型、包装类,它们之间的区别。

重点掌握

1.数据类型之间的转换、强制类型转换

//数值字符串转数字
String text = "3";
//通过Integer.parseInt(),将数字字符串,转换为数值
int num = Integer.parseInt(text);
System.out.println(num);    //控制台输出 3

//显式转换(强制类型转换)
double b = 5.3;
int a = (int)b;
//整型没有小数,所以在强制转换时,要注意精度的问题
System.out.println(a);   //控制台输出 5

2.四则运算的精度溢出问题

//两个double类型的数值进行四则运行
double a = 9.8;
double b = 0.1;
System.out.println(a+b); // 9.9
System.out.println(a-b); // 9.700000000000001
System.out.println(a*b); // 0.9800000000000001
System.out.println(a/b); // 9.9

这个问题涉及到计算机原理的知识,具体可以参考 java中float和double精度问题

具体的解决方案就是使用 Java在java.math包中提供的API类BigDecimal,而且必须使用BigDecimal构造函数BigDecimal(String),将基本数据类型float/double型数据转成String,然后通过String创建BigDecimal实例进行运算。

double a1 = 1.6;
double b1 = 2.7;
BigDecimal a = new BigDecimal(String.valueOf(a1));
BigDecimal b = new BigDecimal(String.valueOf(b1));
//乘法
BigDecimal c = a.multiply(b);   // c的结果:4.32 
//加法
BigDecimal d = a.add(b);  // d的结果:4.3

3.基础类型的比较

“==”:可以比较基本数据类型 , 也可以比较引用数据类型。

“equals”:只能比较引用数据类型,默认比较的是地址值。string类中重写了eqals方法。

//特别注意数字类型和其包装类的比较,这里很容易出问题
int i = 10;
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = new Integer(10);
Integer i4 = new Integer(10);
Integer i5 = 200;
Integer i6 = 200;
System.out.println(i == i1);// true;i1自动拆箱变成基本类型,两基本类型比较值
System.out.println(i == i3);// true; i3自动拆箱变成基本类型,两基本类型比较值
System.out.println(i1 == i2);// true; i1和i3都指向常量池中同一个地址
System.out.println(i1 == i3);// false; 两个不同的对象
System.out.println(i3 == i4);// false; 两个不同的对象
System.out.println(i5 == i6);// false; 自动装箱时,如果值不在-128到127,就会创建一个新的对象

System.out.println(i1.equals(i));//  true;基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行比较

System.out.println(i3.equals(i4));//  true;两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true

4.String类的常用api

日常对字符串的操作会很频繁,要熟悉掌握一些常用的api

String text = "blog.csdn.net";

//获取字符串长度 length方法
int len = text.length();
System.out.println(len); // 13

//判断字符串是否已xxx字符开头,startsWith方法
boolean flagA = text.startsWith("blog");
System.out.println(flagA); // true

//判断字符串是否包括xxx字符,indexOf方法
int index = text.indexOf("csdn");
System.out.println(index); // 5

//拆分字符串,split方法
String[] strings = text.split("\\."); //这里需要对"."转义,并按其分割
System.out.println(strings); // ["blog", "csdn", "net"]

//截取字符串,substring方法
String str = text.substring(5, 9); //截取第6位,至第9位的字符
System.out.println(str); // csdn



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值