arduino byte转string_包装类,常用类String

越来越意识到编译原理,操作系统,计算机组成原理和计算机网络这四门课的重要性了。。到后期自学的作用不言而喻。。

一、包装类

834e8fd98776756ca957ae17be648c7d.png

二、字符串

895805c26e92381531d1e4966694bebd.png

三、可变字符序列

c99888a98ca3ffa1922739a9921fd37d.png

四、数学相关类的使用

0f10351d5d89996cdc8da7933fc6f96c.png

五、日期时间API

8cad17c38858f23febf4599bfbf44615.png

一、包装类

1、包装类

当要使用只针对对象设计的API或新特性(例如泛型),那么基本数据类型的数据就需要包装类来包装

包装类:

序号 基本数据类型 包装类

1 byte Byte

2 short Short

3 int Integer

4 long Long

5 float Float

6 double Double

7 char Char

8 boolean Boolean

9 void Void

2、装箱与拆箱

只能与自己对应的类型之间才能实现自动装箱与拆箱

装箱:把基本数据类型转为包装类对象

转为包装类的对象,是为了使用专门为对象的API和特性

拆箱:把包装类对象拆为基本数据类型

转为基本数据类型,一般是以为需要运算,java中的大多数运算符是为基本数据类型设计的。比较、算术等。

总结:引用数据类型能用的运算符有哪些?

(1)instanceof

(2)=:赋值运算符

(3)==和!=:用于比较地址,但是要求左右两边对象的类型一致或者是由父子类继承关系

(4)对于字符串这一种特殊的对象,支持+(字符串的拼接)

3、包装类的API

和字符串之间的转换

(1)把基本数据类型转为字符串

String str = String.valueOf(a);

(2)把字符串转换为基本数据类型

int a = Integer.parseInt("100");

double a = Double.parseDouble("100");

数据类型的最大最小值

Integer.MAX_VALUE和Integer.MIN_VALUE

Long.MAX_VALUE和Integer.MIN_VALUE

转大小写

Character.toUpperCase('a');

Character.toLowerCase('A');

转进制

Integer.toBinaryString(int i);

Integer.toHexString(int i);

Integer.toOctalString(int i);

4、包装类对象的缓存问题

包装类 缓存对象

Byte -128~127

Short -128~127

Integer -128~127

Long -128~127

Float 没有

Double 没有

Character 0~127

Boolean true和false

Integer i = new Integer(1);//新new的在堆中

Integer j = 1;//这个用的是缓冲的常量对象,在方法区

System.out.println(i == j);//false

Integer i = new Integer(1);

int j = 1;

System.out.println(i == j);//true,和基本数据类型进行比较,都是先将引用数据类型进行拆箱,然后再进行比较运算符的运算

二、字符串

1、字符串的特点

(1)字符串String类型本身是final声明的,意味着不能继承String

(2)字符串的对象也是不可变对象,意味着一旦进行修改就会产生新的对象

我们修改了字符串之后,如果想要获得新的内容,必须重新接受

如果程序中涉及到大量的字符串的修改操作,那么此时的时空消耗比较高,可能需要考虑使用StringBuilder或StringBuffer

(3)String对象内部是用字符数组进行保存的

(4)String类中这个char[] value数组也是final修饰的,意味着这个数组不可变,然后它是private修饰,外部不能直接操作它,String类型提供的所有方法都是用新对象来表示修改后内容的,所以保证了String对象的不可变

(5)就因为字符串对象设计为不可变,那么所以字符串有常量池来保存很多常量对象

常量池在方法区中

细致来说:

JDK1.6及之前:方法区

JDK1.7:堆

JDK1.8:元空间

2、字符串对象的比较

(1)==:比较是对象的地址

只有两个字符串变量都是指向字符串的常量对象时,才会返回true

(2)equals:比较是对象的内容,因为String类型重写了equals方法

只要两个字符串的字符内容相同时,就会返回true

(3)equalsIgnoreCase:比较的是对象的内容,不区分大小写

(4)compareTo:String类型重写了Comparable接口的抽象方法,自然排序,按照字符的Unicode编码值进行比较大小,严格区分大小

(5)compareToIgnoreCase:不区分大小写,其他按照字符的UNICODE编码值进行比较大小

3、空字符的比较

(1)哪些是空字符串

String str1 = ""

String str2 = new String();

String str3 = new String("");

(2)如何判断某个字符串是否为空字符串

if("".equals(str))

if(str != null && str.isEmpty())

if(str != null && str.equals())

if(str != null && str.length() == 0)

4、字符串对象的个数问题

(1)字符串常量对象

String str1 = "hello";//1个,常量池当中

(2)字符串的普通对象

String str2 = new String();

String str22 = new String("");

//两个对象,一个是常量池中的空字符串对象,一个是堆中的空字符串对象

(3)字符串的普通对象和常量对象一起

String str3 = new String("hello");

//str3首先指向堆中的一个字符串对象,然后堆中字符串的value数组指向常量池中对象的value数组

5、字符串拼接结果

原则:

(1)常量+常量:结果是常量

(2)常量与变量或变量与变量:结果是堆

(3)拼接后调用intern()方法:结果在常量池

6、字符串的API

(1)isEmpty()

(2)length()

(3)String concat():拼接,等价于“+”

(4)boolean contanis()

(5)int indexOf():从前往后找,没有返回-1

(6)int lastIndexOf()从后往前找,没有返回-1

(7)char charAt(Index)

(8)new String (char[]) 或 new String(char[],int,int)

(9)char[] toCharArray()

(10)byte[] getBytes():编码,把字符串变为字节数组,按照平台默认的字符编码进行编码

byte[] getBytes(字符编码):按照指定的编码方式进行编码

(11)new String(byte[])new String(byte[],int,int):解码,按照平台默认的字符编码进行解码

new String(byte[],字符编码方式)或new String(byte[],int,int,字符编码方式):解码,按照指定的编码方式进行解码

(12)String subString(int begin):从begin开始到最后

String subString(int begin, int end):从begin到end

(13)boolean matchs(正则表达式)

(14)String replace(xx,xx):不支持正则

String replaceFirst(正则,value):替换第一个匹配部分

String replaceAll(正则,value):替换所有匹配部分

(15)String[] split(正则):按照某种规则进行拆分

(16)boolean startsWith(xx):是否已xx开头

boolean endsWith:是否以xx结尾

(17)String trim():去掉前后空白符,字符串中间的空白符不会去掉

(18)String toUpperCase()转大写

String toLowerCase()转小写

三、可变字符序列

1、StringBuilder和StringBuffer

StringBuilder:线程不安全的(因为他的方法有synchronized修饰)

StringBuffer:线程安全的

2、String和StringBuilder、StringBuffer区别?

String:不可变对象、不可变字符序列

StringBuilder、StringBuffer:可变字符序列

3、常用的API,StringBuilder、StringBuffer的API完全一致

(1)append(xx):拼接、追加

(2)insert(int index,xx):插入

(3)delete(int index, int end):范围删除

deleteCharAt(int index)删除单个元素

(4)set(int index,xx)替换某个元素

(5)reverse()反转

四、和数学相关的

1、java.lang.Math类

(1)sqrt()

(2)pow(x,y)求x的y次方

(3)random()返回(0,1)范围的小数

(4)max(x,y)

min(x,y)

(5)round(x)四舍五入

cell(x)向上取整

floor(x)向下取整

2、java.math包

BigInteger大整数

BigDecimal大小数

运算通过方法完成:add(),substract(),multiply(),divide()

五、日期时间API

1、jdk1.8之前

(1)java.util.Date

new Date()当前系统时间

long getTime():返回该日期时间对象距离1970-01-01 0.0.0.0毫秒之间的毫秒值

new Date(long 毫秒):把该毫秒值换算成日期时间对象

(2)java.util.Calendar

getInstance()得到Calendar的对象

get(常量)

(3)java.text.SimpleDateFormat:日期时间的格式化

y:表示年

M:月

d:天

H:小时,24小时

h:小时,12小时

m:分

s:秒

S:毫秒

E:星期

D:年当中的天数

2、JDK1.8之后

java.time及其子包中

(1)LocalDate,LocalTime,LocalDateTime

now:获取系统日期或时间

of(xxx):获取指定的日期或时间

运算:运算后得到新对象,需要重新接收

plus()在当前日期或时间对象上加xx

minus()在当前日期或时间对象上减xx

(2)DateTimeFormatter:日期时间格式化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值