黑马程序员-String类

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

java.lang.String是对字符串事物的描述。
该类定义了专门用于操作字符串的方法。
APIApplication Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
1.String的方法:
1:构造方法
    字符串是一个常量,一旦创建,就不会更改,存放在方法区中的常量池中。
创建字符串对象,两种方式
String str1 = "abc";    //s1是一个类类型变量, "abc"是一个对象。
String str2 = "abc";		//字符串最大特点:一旦被初始化就不可以被改变。str2 ="k"
                    //"abc"对象没变,在常量池里还在 不必再开辟空间 s2变了,指向k
String str3 = new String("abc");
str1str2使用的是同一地址空间,因为String使用的是常量池
str3new出来的,就相当于开辟了新的空间,地址也就跟str1,str2不一样的
 
String类复写了Object类中equals方法,用于判断字符串是否相同。
System.out.println(str1.equals(str2)); --true,地址一样,值也一样
System.out.println(str1.equals(str3)); --true,地址不一样,但是值一样
System.out.println(str1 = = str2); --true,地址一样,值也一样
System.out.println(str1 = = str3); --false,地址不一样,值一样,还是false
 
        String s1 = "钓鱼岛";
	String s2 = "钓鱼";
	String s3 = "";
	//变量,编译时期,没有值,运行时候,从新开内存空间
	System.out.println(s1==(s2+s3));//false
	//运算的是常量,固定不变的,编译时期,JVM已经确定了值是什么,运行时期不会开新的内存空间
        System.out.println(s1==("钓鱼"+""));//true
 
new String(char[]);//将字符数组转成字符串。
new String(char[],offset,count);//将字符数组中的一部分转成字符串。
 
String类的一般方法:
|-- 获取
       |-- char charAt(int index)返回指定索引出的单个字符
       |-- String substring(int start,int end)获取字符串中的一部分,包含头,不包含尾,返回新字符串
 
       |-- int indexOf(int ch) 返回指定的字符在字符串中第一次出现的位置
       |-- int indexOf(String s)返回指定的字符串在字符串中第一次出现的位置
 
       |-- int lastIndexOf(int ch)反向索引,获取指定的字符在字符串中最后一次出现的位置
       |-- int lastIndexOf(String  s)反向索引,获取指定的字符串在字符串中最后一次出现的位置
 
|-- 判断,返回的都是布尔类型
       |-- boolean equals()两个字符串的全等判断,完全一致,返回true,后期比较的常用
         boolean equalsIgnoreCase(); 判断内容是否相同,并忽略大小写
       |-- boolean contains()判断一个字符串是否在另一个字符串中,完全存在,返回true
         indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。if(str.indexOf("aa")!=-1)
         而且该方法即可以判断,也可以获取出现的位置。
 
       |-- boolean startsWith()判断一个字符串是否以另一个字符串开头
       |-- boolean endsWith()判断一个字符串是否以另一个字符串结尾
       |-- boolean isEmpty()如果字符串的长度是0,返回true   return str.length()==0
 
|-- 转换
 
字符数组转成字符串
	构造函数:String(char[])
			  String(char[],offset,count):将字符数组中的一部分转成字符串。
 
	静态方法:
			  static String copyValueOf(char[]);
			  static String copyValueOf(char[] data, int offset, int count) 
字节数组转成字符串
	  String(byte[])
	  String(byte[],offset,count):将字节数组中的一部分转成字符串。
 
字符串转成字符数组
       char[] toCharArray()
字符串转成字节数组
	   byte[]  getBytes():
 
将基本数据类型或者对象转成字符串
       |-- static String valueOf(任意)
             String s  = String.valueOf(任意的)
 
       |-- String toUpperCase()字符串转成大写,返回新字符串
       |-- String toLowerCase()字符串转成小写,返回新字符串
    
|-- 其他
       |-- int compareTo()按照字典顺序比较两个字符串,前面的大,返回正数,
                          相等返回0,前面的小,返回负数
       |-- String[] split(字符串对字符串进行切割,返回字符串数组,原始字符串不变
       |-- String replace(老串,新串)替换字符串,返回新的字符串,原始字符串不变
       |-- String trim()去掉字符串的两端的空格
问题: "" null区别是什么 ""是一个具体的字符串对象,null是空常量
 ""调用String类中的方法,null是所有引用类型的公共值
2. StringBuffer 字符串缓冲区
是一个容器。字符串操作的缓冲区,提高字符串的操作效率。
底层实现是可变的数组结构。初始容量为 16 个字符。
特点:
1,长度是可变化的。
2,可以直接操作多个数据类型。
3,最终会通过toString方法变成字符串。
   String toString()将缓冲区变成字符串对象
 
增删改查C create U update R read D delete
1,追加
    StringBuffer append(任意类型)   将任意类型数据作为参数添加到已有数据结尾处。
    return this;                    方法运行后的结果是StringBuffer对象

StringBuffer insert(index,数据):可以将数据插入到指定index位置。 练习: public static void method_add(){ StringBuffer sb = new StringBuffer(); //sb.append("abc").append(true).append(34);   //称之为方法的调用链,方法的运行结果还是本类的对象,链式编程 // StringBuffer sb1 = sb.append(34); // sop("sb==sb1:"+(sb==sb1));        //true   sb.insert(1,"qq");  //aqqbctrue34 //sop(sb.toString());//abctrue34 //sop(sb1.toString()); } StringBuffer可变对象,String不可变对象 class StringBufferDemo{ public static void main(String[] args) { StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("bcd"); method(sb1, sb2);         System.out.println(sb1);     //abcbcd System.out.println(sb2);     //bcdabcbcd } public static void method(StringBuffer sb1,StringBuffer sb2){ sb1.append(sb2); sb2.append(sb1); }   }   2,删除 StringBuffer delete(int start, int end):删除缓冲区中的数据,包含start,不包含end StringBuffer deleteCharAt(index):删除指定位置的字符。    // sb.delete(0,sb.length());  //清空缓冲区。    3,获取() char charAt(int index)  int indexOf(String str)  int lastIndexOf(String str)  int length()  String substring(int start, int end)    4,修改 StringBuffer replace(start,end,string); void setCharAt(int index, char ch) ;  修改某个字符 练习 public static void method_update(){ StringBuffer sb  = new StringBuffer("abcde");     //  sb.replace(1,4,"java"); //替换3个 ajavae sb.setCharAt(2,'k');   sop(sb.toString());  }   其他动作: 5,反转 StringBuffer reverse(); 6,将缓冲区变成字符串     String toString()将缓冲区变成字符串,可以使用String对象中的方法 7,将缓冲区中指定数据存储到指定字符数组中
   void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 
 
练习
public static void main(String[] args) {

StringBuilder sb = new StringBuilder("abcdef"); char[] chs = new char[6]; sb.getChars(1,4,chs,1);//chs中字符串从脚标13位 放到数组中 从脚标1开始 for(int x=0; x<chs.length; x++){ sop("chs["+x+"]="+chs[x]+";"); } } 3.JDK1.5 版本之后出现了StringBuilder 完全一样的方法,但是StringBuffer线程安全。 StringBuilder线程不安全,效率高。     单线程的程序,推荐使用StringBuilder Java升级三个因素: 1,提高效率。2,简化书写。3,提高安全性。 基本数据类型对象包装类  重点    基本数据类型有8种,对象的包装类,有8个类    将基本数据类型封装成对象,提供更多的方法,和属性 好处: 1:可以通过对象中的属性和行为操作基本数据。 2:可以实现基本数据类型和字符串之间的转换。   基本数据类型对象包装类: byte Byte short Short int Integer long Long boolean Boolean float Float double Double char Character   重点研究java.lang.Integer 4.1基本数据类型转成字符串 (a) 基本数据类型+""   (b) 基本数据类型.toString(基本数据类型值); 如: Integer.toString(34);//34整数变成"34";   4.2字符串转成基本数据类型      (a) parseInt  //例如文本框的年龄换成数字 xxx a = Xxx.parseXxx(String);    静态调用   例如:int a = Integer.parseInt("123");   boolean b = Boolean.parseBoolean("true");       (b) int intValue()Integer构造方法中包装的字符串,转成int类型,必须是数字格式的字符串         Integer i = new Integer("123");    对象调用方式 int num = i.intValue();   4.3 进制转换 十进制转成其他进制 转成二进制:toBinaryString 转成八进制:toOctalString 转成十六进制:toHexString   其他进制转成十进制。 parseInt(string,radix); 例如:int x = Integer.parseInt("3c",16); sop("x="+x);   4.4 JDK1.5新特性---自动装箱和自动拆箱     |-- 自动装箱,就将基本数据类型封装成对象     |-- 自动拆箱,将封装成对象的基本数据类型,转成基本数据类型 Integer x = new Integer(4);可以写成下面的格式 Integer x = 4;//自动装箱//这里的4相当于new Integer(4)             //这里的x不能为null 否则下面的x.intvalue 无法用 会造成异常 x = x/* x.intValue() */ + 2; //x+2:  x进行自动拆箱x.intValue(),变成成了int类型。和2进行加法运算。再将和进行装箱赋给x  练习          Integer a = new Integer(20); Integer b = new Integer(20); //System.out.println(a==b);//false   指向的new Integer,地址不同 //System.out.println(a.equals(b));//true Integer中复写了equals   Integer aa = 127;//装箱时数据在byte范围内,数值相同JVM开辟内存空间                  // bb=aa 相同的引用指向的是同一个对象 Integer bb = 127; System.out.println(aa==bb);//T System.out.println(aa.equals(bb));//T  
----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------
基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip 【备注】 1、该资源内项目代码百分百可运行,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值