重学Java——数据类型与String类

 

目录

 

 

数据类型大全

String详解

1 请解释String比较中“==”与equals()区别?

2 请解释String中两种对象实例化方法的区别?

3 对象池有什么用?有那些?

String类常用方法

字节数组的String类应用

常用方法归类:

 

数据类型大全

类型大小范围备注
byte1字节8位(-128)~(127)

byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

short2字节

16位(-2^15) ~(2^15 - 1)

 
int4字节32位(-2^31) ~(2^31 - 1) 
long(大整数)8字节64位(-2^63) ~(2^63 - 1)数字结尾带“L”,"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
float4字节32位浮点数不能用来表示精确的值,如货币;
double8字节64位浮点数不能用来表示精确的值,如货币;
boolen1字节 默认值是 false;
char2字节

(16位)最小值是 \u0000(即为0);

 最大值是 \uffff(即为65,535);

char类型是一个单一的 16 位 Unicode 字符;

可以储存任何字符;

String引用类型 java中String不是基本数据类型,String中之所以能够保存字符串是因为其中定义了一个数组。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以下大多内容来自

(5条消息) Java基础之String类型详解_阿星_Alex的博客-CSDN博客_javastring类型

String详解

1 请解释String比较中“==”与equals()区别?

  • == :进行的是数值比较,如果用于对象比较上比较的是两个内存的地址数值。
  • equals() :是类所提供的一个比较方法,可以直接进行字符串内容比较。

2 请解释String中两种对象实例化方法的区别?

  • 直接赋值:只会产生一个实例化对象,并且可以自动保存到String对象(常量)池
  • 构造方法:会产生两个实例化对象,并且不会自动入池,但是可以利用intern方法.

3 对象池有什么用?有那些?

对象池主要的目的是为了实现数据的共享,在Java中String对象池分为两种:

  • 静态常量池:指的是程序在加载的时候会自动将此程序中保存的字符串、常量、类和方法等,全部进行分配;
  • 运行时常量池:当一个程序加载之后,里面可能有一些变量,这个时候提供的常量池。
//(2)
public class StringDemo {
    public static void main(String[] args) {
        String strB=new String("abc").intern();
        String strA= "abc";
        System.out.println(strA==strB);
    }
}

//true


//(2)
public class StringDemo {
    public static void main(String[] args) {
        String strB=new String("abc");
        String strA= "abc";
        System.out.println(strA==strB);
    }
}
//false

//(3)
public class StringDemo {
    public static void main(String[] args) {
 
        String strA= "abc"+"123"+"DEF";
        String strB="abc123DEF";
 
        System.out.println(strA==strB);
    }
}
//true

//(3)
public class StringDemo {
    public static void main(String[] args) {
 
        String rr = "123";
 
        String strA = "abc" + rr + "DEF";
        String strB = "abc123DEF";
 
        System.out.println(strA == strB);
    }
}
//false

String类常用方法

string(char[ ] value) 将传入的字符数组全变成字符串
public class StringDemo {
    public static void main(String[] args) {
        char[] cc = {'a', 'b', '1'};
        System.out.println(new String(cc));
    }
}
结果:ab1
string(char[ ] value,int offset,int count) 将传入的字符数组部分变成字符串,offset是起始位置,count是范围大小
public class StringDemo {
    public static void main(String[] args) {
        char[] cc = {'a', 'b', '1','2','3'};
        System.out.println(new String(cc,2,3));
    }
}
结果:123
charAt(int index) 获取指定索引位置的字符
public class StringDemo {
    public static void main(String[] args) {
       
        String str ="abcdefg";
        System.out.println(str.charAt(2));
    }
}
结果:c
toCharArray() 将字符串中数据以字符数组的形式返回
public class StringDemo {
    public static void main(String[] args) {
        String str = "abcdefg";
        char[] cc = str.toCharArray();
        System.out.println(cc.length);
    }
}
结果:7
equals() 字符串判断,区分大小写
上文有介绍用法

equalsIgnoreCase() 不区分大小写的判断
public class StringDemo {
    public static void main(String[] args) {
        String str = "abc";
        String str1 = "ABC";
        System.out.println(str.equalsIgnoreCase(str1));
    }
}
结果:true
compareTo() 字符串的比较,返回数字,ascii码值相减,区分大小写
public class StringDemo {
    public static void main(String[] args) {
        String str = "a";
        String str1 = "A";
        System.out.println(str.compareTo(str1));
    }
}
结果:32
compareToIgnoreCase()同上,不区分大小写


 

字节数组的String类应用

string(byte[ ] value) 将传入的字节数组全变成字符串
string(char[ ] value,int offset,int count) 将传入的字节数组部分变成字符串,offset是起始位置,count是范围大小
string.getBytes() 将字符串转化为字节数组
getBytes(String ccc) 编码转换


 

常用方法归类:

1.字符串查找
contains(String s) 判断子字符串是否存在

indexOf(String s)从头查找指定字符串的位置

intdexOf(String s, int fromIndex)从指定位置开始查找指定字符串的位置

public class StringDemo {
    public static void main(String[] args) {
        String str = "1234C";
        System.out.println(str.indexOf("C",2));
    }
}
结果:4
lastIndexOf(String str)从后往前找

lastIndexOf(String s, int fromIndex)从指定位置由后往前找



startsWith(String str)判断是否以指定字符串开头

public class StringDemo {
    public static void main(String[] args) {
        String str = "1234C";
        System.out.println(str.startsWith("123"));
    }
}
结果:true
startsWith(String str,int toffset)判断是否从指定位置以指定字符串开头

endsWith(String str)判断是否以指定字符串结尾



2.字符串替换
replaceAll(String regex,String replacement)全部替换

    public static void main(String[] args) {
        String str = "123V123";
        System.out.println(str.replaceAll("123","abc"));
    }
}
结果:abcVabc
replaceFirst(String regex,String replacement)替换首个



3.字符串拆分
split(String regex)按照指定字符串全部拆分

split(String regex,int limit)按照指定字符串限制拆分成指定段数

public class StringDemo {
    public static void main(String[] args) {
        String str = "123VV456VVaaVVcc";
        for (String a : str.split("VV", 2)) {
            System.out.println(a);
        }
    }
}
结果:
123
456VVaaVVcc


4.字符串截取
substring(int beginIndex)从指定位置开始截取到最后

substring(int beginIndex,int endIndex)设置了截取范围

public class StringDemo {
    public static void main(String[] args) {
        String str = "123VV456VVaaVVcc";
            System.out.println(str.substring(3,8));
    }
}
结果:VV456
5.字符串格式化
public class StringDemo {
    public static void main(String[] args) {
        String name = "KOBE";
        int age = 18;
        double high = 198.534;
        String str = String.format("姓名:%s、年龄:%d,身高:%.2f", name, age, high);
        System.out.println(str);
    }
}
结果:
姓名:KOBE、年龄:18,身高:198.53
6.其他方法
concat()字符串连接

intern()字符串入池

isEmpty()字符串判断是否为""

length()返回字符串长度

trim()去除开头结尾的空格

toUpperCase()转大写

toLowerCase()转小写

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

桂亭亭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值