Java——String对象

一、字符串:不可变对象;一旦赋值,其内容是不可改变的;

  //重新赋值,等于创建新的对象;

二、创建方法:

  (1)String s=new String();

  (2)String s1=new String("abc");

  (3)String s2="abc";  //s为String类型的变量;"abc"是一个对象;

    注释:

    1)s="kk";  //s指向的对象变为"kk","abc"对象还在,没有改变;

     2)s1==s2;//false,因为s1和s2为值指向不同的对象;

      s1.equals(s2);//ture;String类复写了Object中的equals方法;定义了用于判断字符串是否相同的方法;

    3)s1和s2的不同:s1在内存中有个2对象,s2只有1个;

      //一个在堆内存,一个在方法区;

    4)String s3="abc";String s4="abc";s3==s4;true  //s3和s4指向同一对象,不会重新开辟内存空间;

    5)String s5 =new String("abc");s3==s5;false;//s5的地址为堆内存中的,s3的在方法区;所有false;

三、常见操作:

   1.获取:

    (1)int length():获取长度;//数组的.length没有小括号,此处为方法;

    (2)char charAt(int index):获取索引位置的字符;从0开始索引;

    (3)获取字符第一次在字符串中出现的位置:

      1)int indexOf(String str);//不存在返回-1;

      2)int indexOf(String str,int fromIndex);//从formIndex位置开始查;

      3)lastIndexOf();//反向;

  2.判断:

  (1)boolean contains(str);判断是否包含str;

  (2)boolean isEmpty():判读长度是否为0;1.6版本新加入;//不能判断是否为null;

    //判断长度0的三种方法:(1)str.isEmpty();(2)str.length()==0;(3)“”.equals(str)

    //常用的为第三种,不会报空指针异常;

  (3)boolean startsWith(str):判断是否str开头;

  (4)boolean endsWith(str):判断是否str结尾;

  (5)boolean equals(str);判断字符串内容是否相同;复写了Object中的equals方法;

  (6)boolean equalsIgnoreCase(str);判断字符串是否相同,忽略大小写;

  3.转换:

   (1)将字符数组转成字符串:

      1)构造函数: String(char[]);

           String(char[],offset,count);//从offset个开始,选中count个;

      2)静态方法:startic String copyValueOf(char[]);

           startic String copyValueOf(char[],offset,count);

              static String valueOf(char[]);

          char[]c={‘1‘,‘2‘,‘3‘,‘4‘,‘5‘};

          String str=String.valueOf(c,1,3);

          System.out.println(str);

  (2)将字符串转为数组:char[] toCharArray();

  (3)将字节数组转成字符串构造:

      String(byte[]);

      String(byte[],offset,count);//从offset个开始,选中count个;

  4)将基本数据类型转换成字符串:

      static String valueOf(int);

      static String valueOf(double);

  4.替换:String replace(oldStr,newStr);//replace创建了新的字符串;对老的字符串本身没有影响,用新的字符串接收;

   5.切割:String[] split("str");用str把字符串切割成字符串类型数组;

   6.子串:获取字符串中的一部分;

    String substring(begin);//从指定位置到结尾;索引从0开始;

    String substring(begin,end);//从开头索引到结尾索引;包括开头,不包括结尾;

  7.转换,去除空格,比较:

    (1)将字符串转成大写或小写:

      String toUpperCase();//大写;

      String toLowerCase();//小写;

    (2)将字符串两端的空格去掉:String trim();

    (3)将两个字符串进行自然顺序比较:int str1.compareTo(str2);//str1的ascii码值减去str2的码值;

原文地址:https://www.cnblogs.com/Tractors/p/11235112.html

时间: 2024-10-08 23:51:47

Java——String对象的相关文章

Java String对象的经典问题(转)

public class StringTest { public static void main(String[] args) { String strA = "abc"; String strB = "abc"; String strC = new String("abc"); System.out.println(strA == strB);//true System.out.println(strA == "abc")

我的Java开发学习之旅------>Java String对象作为参数传递的问题解惑

又是一道面试题,来测试你的Java基础是否牢固. 题目:以下代码的运行结果是? public class TestValue { public static void test(String str) { str="World"; //代码3 } public static void main(String[] args) { String string = "Hello"; //代码1 test(string); //代码2 System.out.println(

【转】Java String对象的经典问题(new String())

public class Test { public static void main(String[] args) { String str = "abc"; String str1 = "abc"; String str2 = new String("abc"); System.out.println(str == str1); System.out.println(str1 == "abc"); System.out.p

JAVA String对象的创建

String对象的创建是比较特殊的,普通对象创建都是在堆中创建,String对象确不一定,下面看一段代码 [java] view plaincopy public class StringTest1 { public static void main(String[] args) throws Exception{ String a = "abc"; String b = "abc"; String c = "ab"; String d = ne

JAVA STRING 对象自动补齐空格

之所以补空格因为 该长度不一的时候 有时候会导致 ORACLE数据库的子SQL 变得很多多. 导致非常慢. ORACLE 11G 11.2.01 打补丁风险太大 只好补空格让其一直. 注意采用的字节长度 public static String formatStr(String str, int length) { if (str == null) { str=""; } int strLen = str.getBytes().length; if (strLen == length)

Java基础知识强化101:Java 中的 String对象真的不可变吗 ?

1. 什么是不可变对象?       众所周知, 在Java中, String类是不可变的.那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的. 不能改变状态的意思是:不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变. 2. 区分对象和对象的引用 对于Java初学者, 对于String是不可变对象总是存有疑惑.看下面代码: 1 String s =

分析Java的String对象

对于Java中的String对象,个人觉得每个程序员都会思考过.学习过.研究过这个对象,因为他是面试官们的最爱.如:String s = new String("abc");,创建了几个对象.这种问题反复出现在程序员面试的过程中.下面我们对应着一些代码片段以及其的执行结果,来深入分析Java的String对象. 首先我们要注意的是String对象的处理在JDK6和JDK7中的处理是不同的.下面通过代码来分析String的三个主要方面知识. 1.常量池的存在 先看看下面代码以及执行结果:

Java系列2 --- 你真的知道Java的String对象么?

?在上一篇中说道这篇文章会说java的动态绑定机制,由于这个知识点放在继承中讲会比较合适,说以在这篇文章中先来详细的说说String对象吧. ?只要学过Java的同学,我们都知道Java一共有8中基本类型,但是在Java中最常用的String类型却不属于这8中基本类型中.他是Java.lang包中的一个类.但是String对象在引用传递中JVM的处理却与其他对象不同. ?在正式开始来讲这个String对象的时候我们首先来简单的说明下Java中的值传递和引用传递.正如很多Java说熟知的那样,Ja

Java之内存分析和String对象

http://www.cnblogs.com/devinzhang/archive/2012/01/25/2329463.html Java中内存分析: 栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中). 堆(heap):存放所有new出来的对象. 常量池(constant pool):在堆中分配出来的一块存储区域,存放储显式的String常量和基本类型常量(float.int等).另外