String类-创新互联

String类使用""进行定义,可以利用+ 实现字符串的连接,

创新互联主要从事成都做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务柴桑,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108String类简介:

字符串严格来说不算是一个基本数据类型,Java之中为了方便开发,利用JVM支持制造了可以简单使用的String类,可以像基本数据类型赋值处理。

String类之中之所以可以保存字符串主要是定义了一个数组,String里所有的字符串每一个字符数据保存了数组之中。jdk1.8之前String支持类,采用字符数组,之后为字节数组。

String字符串比较:

可以==判断,只不过判断的不是内容,而是地址。

如果想要进行String字符串内容判断,使用String类提供的一个方法

字符串比较(有变形):public loolean equals(String str)

String比较中==与equals()区别?

==进行的是数值比较,如果用于对象比较上比较的是两个内存的地址数值

而equals()是类中所提供的一个方法,可以直接比较字符串内容。

字符串常量是String类的匿名对象:
public static void main(String args[])
  {
		
	  String input = null;
	  System.out.print("qwe".equals(input));
  }
}

equals()方法中提供一个回避null的判断,将字符串常量写在前面防止出现”NullPointException“,字符串是一个匿名对象,匿名对象一定是堆内存开辟出空间的对象。

构造方法实例化对象实际上是属于一种自己的专用的内存空间,在String类中有手动入池,这个方法public String intern();

public static void main(String args[])
  {
		String strA = "mn";
		String strB = new String ("mn").intern();
		System.out.print(strA == strB);

加入intern()的方法,所以使用构造出来堆String类对象的内容也可以实现对象池的统一管理。但是做法啰嗦;

请解释String两种实例化方式区别;

直接赋值:只会产生一个实例化对象,并且可以自动保存到对象池当中。以实现该字符串实列的重用,

构造方法:会产生两个实列化对象,并且不会直接入池,可以使用intern()方法手工入池处理。

String对象池:

对象池的主要目的实现数据的共享处理,以String对象池为列,里面的内容主要是为了重用,重用的处理是为共享设计。

在Java中对象池可以分为两种:

静态对象池:指的是(*.class)在加载的时候会自动将此程序之中的保存的字符串,普通的常量,类和方法的信息等等,全部进行分配;

运行时常量池:里面可能有一些变量,这个时候提供的常量池。

public class StringDemo {
  public static void main(String args[])
  {
		String strA = "wh";
		String strB = "w" + "h";
		
		System.out.print(strA == strB); 
	 
  }
}

本程序之中给出的内容全部都是常量数据(字符串的常量都是匿名对象)所以直接做好相应的连接。

public static void main(String args[])
  {
		String info = "wh";
		String strA = "wwh";
		String strB = "w" + info;
		
		System.out.print(strA == strB); 
	 
  }
}

这个时候是false,因为程序加载的时候不确定info是什么内容,因为字符串连接时info是一个变量,所以不认为strB结果就是最终的结果。

字符串与字符数组:

字符串的基本组成单元是字符,在String类种提供两者转换方法。

构造方法public String(char【】value) 将传入的全部字符数组变为字符串。

构造方法public String(char【】value,int offset,int count)将部分字符数组变为字符串。

普通方法public char charAt(int index)获取指定索引位置的字符。

普通方法public char【】toCharArray()将字符串中的数据以字符数组的形式返回。

  String str = "wangbuer";
	  char c = str.charAt(7);
	  System.out.println(c);
  }
}
public static void main(String args[])
  {
		String str = "wangbuer";
		char[] result = str.toCharArray();
		for (int x = 0; x< result.length;x++)
		{
			result[x] -= 32;
		}
		String newStr = new String(result);
		System.out.println(newStr);
        System.out.println( new String (result,0,4));
  }
}

字符串与字节:

构造方法 public String(byte【】 bytes)将全部字节数组变为字符串;

构造方法 public String(byte【】 bytes,int offset,int length)

普通方法 public byte【】 getBytes()将字符串转为字符数组

普通方法: public byte【】 getBytes(String charsetName) throws UnsupportedEncodingException编码转换。        

public static void main(String args[])
  {
	  String str = "wangbuer";
	  byte data[] = str.getBytes();
	  System.out.println(data);
  }
字符串比较:
{
	  String str = "wang";
	  System.out.println("WANG".equals(str));//区分大小写比较
	  System.out.println("WANG".equalsIgnoreCase(str));//不区分大小写。
  }

compareTo()进行大小写比较

compaerToIgnoreCase()忽略大小写

public static void main(String args[])
  {
	  String strA = "wang";
	  String strB = "WANG";
	  System.out.println(strA.compareTo(strB));//区分大小写比较
	  System.out.println(strB.compareToIgnoreCase(strA));//不区分大小写。
  }

  }
字符串查找

从一个完整的字符串之中查找子字符串的存在就属于字符串的查找操作,在String类里面一共提供如下方法:

public public boolean contains(String s) 普通方法 判断子字符串是否存在

public static void main(String args[])
  {
	  String str = "www.baidu.com";
	  System.out.println(str.contains("w"));//true
	  System.out.println(str.contains("aom"));//false
		 }

  }

contains jdk1.5之后有的功能

public int intdexOf(String str) 普通方法 从头查找指定字符串的位置,找不到返回-1;

public class StringDemo {
  public static void main(String args[])
  {
	  String str = "www.baidu.com";
	  System.out.println(str.indexOf("w"));//0
	  System.out.println(str.indexOf("aom"));//-1
	  if(str.indexOf("w") != -1)
	  {
		  System.out.println("数据存在");
	  }
		 }

  }

indexOf开始是为了进行位置的查询,是由前查找的。

lastIndexOf是由后向前查找。

String str = "www.baidu.com";
	  System.out.println(str.lastIndexOf("w"));//2

判断是否以指定字符串开头或者结尾:

String str = "**@@www.baidu.com##";
	  System.out.println(str.startsWith("*",1));//从第二个判断
	  System.out.println(str.endsWith("#"));
字符串替换
public static void main(String args[])
  {
          String str = "www.bay.com";
          System.out.println(str.replaceAll("w", "a"));//替换全部
          System.out.println(str.replaceFirst("w", "a"));//替换首个
	  }
		 }
字符串拆分
public static void main(String args[])
  {
	  String str = "张三:20|李四:29|王五:19";
	  String result[] = str.split("\\|");
	  		for(int x = 0;x< result.length;x++) {
	  			String temp[] = result[x].split(":");
	  			System.out.println("姓名:" +temp[0] + "年龄:" + temp[1]);
	  		}
	  }

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:String类-创新互联
本文网址:http://myzitong.com/article/pojce.html