8、JAVA基础&字符串

8、JAVA基础&字符串

 



String 

字符串的特点:

1java中用String类来描述字符串。

2、字符串一但初始化就不可以被改变,因为是个常量。所以可以被共享

String s = "abc";// 定义一个类类型的变量s指向了一个字符串对象

String s2 = new String("abc");

这两个是有差别的,s对应的字符串在字符串缓冲池中。

当我们定义s2后此时在堆内存中创建了一个字符串对象,然后把缓冲池中的内容存放到对象中。

如何创建字符串对象呢?

1,直接使用 "".String s = "abc";

2,将一个字节数组或其中的部分变成字符串。

3,将一个字符数组或其中的部分变成字符串。

将数组变成字符串,可以用字符串构造函数来完成 

String( char [] value )  将字符数组转换成字符串

/*

 * 字符串的特点:

 * 1java中用String类来描述字符串。

 * 2,字符串一但初始化就不可以被改变。因为是个常量。

 */

String s = "abc";//定义一个类类型的变量 指向了一个字符串对象。

String s1 = "abc";

System.out.println(s == s1);//true

String s2 = new String("abc");

System.out.println(s == s2);//false;

System.out.println(s.equals(s2));//String类的equals覆盖了Object中的equals方法,

//用来判断字符串对象的内容是否相同。

String a = "abcd";

String a1 = "ab";

String a2 = "cd";

String b = a1+a2;

String c = "ab"+"cd";

System.out.println("a==b:"+(a==b));

System.out.println("a==c:"+(a==c));

  按照面向对象的思考方式来思考字符串对象的功能。 

 

 1,获取;

    1.1 获取长度。

    int length();

   1.2 获取字符串中的字符。

   char charAt(index);

   1.3一个字符或者一个字符串在一个字符串的中的位置。

   int indexOf(ch)

   int indexOf(string)

   int indexOf(ch,fromIndex)

   int indexOf(string,fromIndex)

   int lastIndexOf(ch);

   

   这些获取索引位的方法,如果没有要查找的内容,返回-1.

   所以这个方法还有另一个应用,就是判断字符或者字符串是否存在。

  

  1.4获取部分字符串。

    String substring(begin,end);包含头,不包含尾。

  2,判断。

   2.1 是否包含指定的字符串。

  boolean contains(string);

   2.2 是否是以指定的字符串开头。

   boolean startsWith(string);

   2.3 是否是以指定的字符串结尾。

   boolean endsWith(string);

   2.4忽略大小写判断字符串内容。

   boolean equalsIgnoreCase(string);

  3,转换。

    3.1 将字符串转成大小写。

    String toLowerCase();

    String toUpperCase();

    3.2 将字符串转成数组。

   byte[] getBytes();//字节数组。

    char[] toCharArray();//字符数组

   3.3 将字符串转成字符串数组。

    String[] 

   3.4 将字符串中的中内容进行替换。

   String replace(ch1,ch2);

    String replace(string1,string2);

   3.5 去除字符串两端的空格。

  String trim();


上午

StringBuffer 是一个容器

当要创建一个对象的时候,首先查阅API文档,看是否有

构造函数存在,如果有才能创建,否则无法创建此类的实例对象

字符串缓冲区的特点:

1、用于存储数据的容器。

2、该容器的长度是可变的。

3、该容器可以存储基本数据和引用数据类型 

append() 支持常见数据类型 但是不能直接添加 byte 和 short

常见创建容器对象

StringBuffer sb = new StringBuffer();

既然是容器

应该具备一些常见的功能

1、添加数据

StringBuffer s1 = sb.append("ab"); 太烂了

StringBuffer s1 = sb.append("cd");

常用 

sb.append("ab").append("cd");  方法链调用

append是在结尾追加数据,前面数据和此时添加数据变成一个字符串

insert() 插入数据, StringBuffer insert(index , data) 根据指定的位置插入data数据

当前位置上的数据会被顺延。

2、删除数据

delete( int start , int end ) 一般有头有尾的参数,一般都是包含头不包含尾

清空缓冲区

sb.setlength(0);

StringBuffer sb = new StringBuffer();从新开辟了一个缓冲区

sb.delete(0.sb.length); 最合理

3、查找数据

char charAt(int index);

int indexOf(String str);

indexOf(String str, int fromIndex) 

4、修改数据

setCharAt(int index, char ch);

replace(int start,int end,String str);

reverse();字符串换反转

可变数组的原理:

字符串缓冲区和数组的区别:

1 数组是固定长度

字符串缓冲区是可变长度

2、数组中的元素类型是固定同一类型

字符串缓冲区的元素类型是任意类型,也可以是用一类型

3、数组对象,只有一个length属性,然后通过角标操作数组的元素

字符串缓冲区是通过一系列的方法(怎删改查)来炒作缓冲区中的元素

4、数组中的元素,通过角标直接访问使用

字符串缓冲区的元素通常经过操作后,都要通过toString变成字符串使用。

StringBuilder JDK1.5 以后才出现的

是可以替代 Stringbuffer 

但是他是线程不同步的,StringBuffer是线程同步的

虽然它在多线程时不安全,但是在单线程时效率高

StringBuilder 和 StringBuffer 的用法一模一样

对于java的升级无外乎是哪个原因:

1、提高效率

2、简化书写

3、提高安全性

基本数据类型包装成类

byte Byte

short Short

int Integer

long Long

float Float

double Double

char Character

boolean Boolean

把基本数据类型封装成对象有什么好处呢?

可以吧对象中的定义更多的属性和行为对基本数据值进行操作

比如,整数的范围。如果整数被封装成对象,那么整数的取值范围,当然是整数对象自己最清楚

所以只要调用对象中的属性和行为就可以了。

基本数据类型包装类,它的最常见作用之一:完成基本数据和字符串之间的转换

完成字符串格式数值转成整数

Integer.parseInt("23"+4);结果27

对于其他数据类型的字符串转换方式都一样

xxx a = Xxx.parseXxx(Xxxstring);

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

但是需要注意有一种类型没有转换

Character

怎么将整数转成字符串呢?

int num = 4;

String s = num + ""; 

String s = Integer.toString(num);

怎么将一个整数值封装成对象呢?通过构造函数.还可以通过静态方法valueOf的形式

Integer i1 = new Integer(4);

Integer i2 = new Integer("4");

sop(i1==i2); false 

sop(i1.equals(i2)); true

怎么将整数对象装成整数呢?

使用 intValue方法

int y = i1.intValue()

将其他进制转换成十进制

int  x = Integer.parseInt("110",2);

sop(x+1);

1.5版本后对基本数据类型对象包装类进行升级,可以像操作解一般数据类型一样,操作包装类型数据

这就是升级中的简化书写

但是需要注意,在使用简写时,要注意z可以的取得值中多了一个null

如果自动装箱的数据在byte范围之内,同样的数据不在开辟空间

基本数据用大小与符号比较

对象比较用compareTo比较


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值