黑马程序员——Java基础---String

原创 2015年07月08日 10:21:58

——- android培训java培训、期待与您交流! ———-

String类

package String;

public class Demo {

    public static void main(String[] args) {

        String s1="abc"; //s1是一个类类型变量,"abc"是一个对象
                        //字符串最大特点:一旦被初始化就不可以被改变

        String s2=new String("abc");
        /*
         *s1和s2的区别:
         *s1在内存中有一个对象,s2在内存中有两个对象。
         */

        System.out.println(s1.equals(s2));//String类复写了Object类中equals方法。该方法用于判断字符串是否相同
    }

}

String类适用于描述字符串事物。
那么它就提供了多个方法对字符串进行操作

常见的操作:
1.获取
1.1 字符串中包含的字符串,也就是字符串的长度
int length():获取长度

1.2 根据位置获取位置上的某个字符。
char charAt(int index)

1.3根据字符获取该字符在字符串中位置
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是Str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取Str在字符串中出现的位置。
int lastIndexOf(int ch): 反向索引

2.判断。
2.1 字符串中是否包含某一个子串 boolean contains(str)
特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中,该方法既可以判断,也可以获取出现的位置。

2.2 字符串中是否有内容。 boolean isEmpty()
2.3 字符串是否是以指定内容开头 boolean startsWith(str)
2.4 字符串是否是以指定内容结尾。 boolean endsWith(str)
2.5 判断内容是否相同,复写了object类中equals方法。 boolean equals(str);
2.6 判断内容是否相同,并忽略了大小写。 boolean equalsIgnoreCase();

3.转换.
3.1 将字符数组转成字符串
构造函数 : String(char[])
String(char[] ,offer,count):将字符数组中一部分转换成字符串。
静态方法:
static String copyValueOf(char[])
static String copyValueOf(char[] data,int offset,int count)

static String valueOf(char[])

3.2 将字符串转换成字符数组
char[] toCharArray()

3.3将字节数组转换成字符串。
String(byte[])

3.4 将字符串转换成字节数组。**
byte[] getBytes()

3.5 将基本数据类型转换成字符串
static String valueof(int)
static String valueof(double)

特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

4.替换
String replace(oldchar,newchar);

5.切割
String[] split(regex)

6.字串,获取字符串中的一部分
String substring(begin)
String substring(begin,end)
7.转换,去除空格,比较
7.1 将字符串转换成大写或者小写
String toUpperCase()
String toLowerCase()
7.2 将字符串两端的多个空格去除
String trim()
7.3 对两个字符串进行自然顺序的比较
int compareTo(String)

package String;

public class Demo {

    public static void main(String[] args) {

        //method_get();
        //method_is();
        //method_trans();
        //method_replace();
        //method_split();
         //method_sub();
         method_7();
    }
    public static void method_get()
    {
        String str="avasdfsdggh";

        //长度
        sop(str.length());

        //根据索引获取字符
        sop(str.charAt(4));

        //根据字符获取索引
        sop(str.indexOf('a'));
        sop(str.indexOf('a', 3));

        //反向索引
        sop(str.lastIndexOf('a'));


    }
    public static void method_is()
    {
        String str="avasdggh";
        //判断是否包含子串
        sop(str.contains("dgg"));

        //判断字符串中是否有内容
        sop(str.isEmpty());

        //判断是否以指定内同开头
        sop(str.startsWith("avas"));

        //判断是否以指定内同结尾
        sop(str.endsWith("ggh"));

        //判断两个字符串是否相同
        sop(str.equals("asdf"));

        //判断内同是否为空,并忽略了大小学
        sop(str.equalsIgnoreCase("avasDggh"));

    }
    public static void method_trans()
    {
        //字符数组变成字符串
        char[] arr={'a','g','s','r'};
        String s=new String(arr);
        sop(s);

        //将字符串变成字符数组
        String s1="sdfgg";
        char[] chs=s1.toCharArray();

        for(int x=0; x<chs.length; x++)
        {
            sop(chs[x]);
        }


    }
    public static void method_replace()
    {
        String s="hello java";
        String s1=s.replace("java","world");
        String s2=s.replace("hello java", "hello boy");
        sop(s1);
        sop(s2);


    }

    public static void method_split()
    {
        String s="zhangsan,lisi,wangwu";
        String[] arr=s.split(",");
        for(int x=0; x<arr.length; x++)
        {
            sop(arr[x]);
        }


    }
    public static void method_sub()
    {
        String s="abcdefs";
        sop(s.substring(3));//从指定位置到结尾
        sop(s.substring(0, 4));//包含头不包含尾
    }
    public static void method_7()
    {
        String s="   hello java";
        sop(s.toLowerCase());
        sop(s.toUpperCase());
        sop(s.trim());

        sop(s.compareTo("dads"));

    }
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }

}

练习一:

package String;
/*
 * 模拟一个trim方法,取出字符串两端的空格
 * 思路: 
 * 1.判断字符串第一个位置是否是空格,如果是继承向下判断,直到不是空格为止
 * 结尾处判断空格也是如此
 * 
 * 2.当开始和结尾都判断到不是空格时,就是要获取的字符串。
 */
public class MyTrim {

    public static void main(String[] args) {

        String s=" fkkk   ";

        int start =0,end=s.length()-1; //定义开始角标和最后角标
        //在开始角标小于等于末位角标并且开始角标等于空格的情况下,开始角标自增
        while(start<=end && s.charAt(start)==' ')
        {
            start++;
        }
        while(start<=end && s.charAt(end)==' ')
        {
            end--;
        }
        String y=s.substring(start,end+1);//取字串
        System.out.println(y);
    }

}

结果:这里写图片描述

练习二:

package String;
/*
 * 将字符串反转
 * 
 * 思路:将字符串变成数组
 * 对数组反转
 * 将数组变成字符串
 */
public class reverseTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s="dssgga";
        //字符串变数组
        char[] chr=s.toCharArray();

        //反转数组
        reverse(chr);

        //将数组变成字符串
        String ss=new String(chr);
        System.out.println(ss);

    }
    //反转数组
    private static void reverse(char[] chr) {

        for(int start=0,end=chr.length-1; start<end; start++,end--)
        {
            change(chr,start,end);
        }
    }
    //将数组变成字符串
    public static void change(char[] chr,int x,int y)
    {
        char temp=chr[x];
        chr[x]=chr[y];
        chr[y]=temp;
    }

}

结果:
这里写图片描述

练习三:

package String;
/*
 * 获取一个字符串在另一个字符串中出现的次数
 *  "fasgdakkffaaf";
 * 思路:
 * 1.定义一个计数器
 * 2.获取kk第一次出现的位置
 * 3.从第一次出现的位置后剩余的字符串中继续获取kk出现的位置
 * 4.每次获取一次就计数一次
 * 5.当获取不到时计数完成
 */
public class StrCountTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str="fasgdakkffaaf";
        String key="kk";

        int count=0;
        int index=0;
        while((index=str.indexOf(key))!=-1)
        {
            str=str.substring(index+key.length());
            count++;        
        }
        System.out.println(count);
    }

}

结果:这里写图片描述

练习四:

package String;
/*
 * 获取两个字符串中最大的相同字串,第一个工作:将短的那个字串进行长度依次递减的字串打印
 * "abkidahellojaxv"
 * "cskhellobm"
 * 
 * 思路:1,将短的那个字串按照长度递减的方式获取到
 * 2.将每获取到的字串去长串张判断是否包含,如果包含,已经找到
 */
public class StringTest1 {

    public static void main(String[] args) {
        String s1="abkidahellojaxv";
        String s2="cskhellobm";
        System.out.println(getMaxSubString(s2, s1));
    }
    public static String getMaxSubString (String s1,String s2)
    {
        //定义大小值,提高效率,减少内存运行
        String max="",min="";
        max=(s1.length()>s2.length())?s1:s2;
        min=(max==s1)?s2:s1;
        //用嵌套循环判断字符是否相等
        for(int x=0; x<min.length(); x++)
        {
            for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)
            {
                String temp=min.substring(y,z);
                //System.out.println(temp);
                if(max.contains(temp))
                {
                    return temp;
                }

            }
        }
        return "";
    }


}

这里写图片描述

StringBuffer
StringBuffer是字符串缓冲区,是一个容器
特点:1.长度是可变化的
2.可以操作多个数据类型
3.最终会通过toString方法变成字符串。
1,存储:
StringBuffer append() :将指定数据作为参数添加到已有的数据结尾处
StringBuffer insert(index,数据):可以将数据插入到指定index位置

2.删除:
StringBuffer delete(start,end)删除缓冲区中的数据,包含头不包含尾。
StringBuffer deleteCharAt(index):删除指定位置的字符。

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)

5.反转
StringBuffer reverse();

6.将缓冲区中指定数据存储到指定字符数组中
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)

jdk1.5版本后出现了StringBuilder

StringBuffer是线程同步的
StringBuilder是线程不同步的

开发建议用StringBuilder

升级的三个因素:
1.提高效率
2.简化书写
3.提高安全性

基本数据类型对象包装类
byte Byte
short Short
int Integer
long Long
boolean Boolen
float Float
double Double
char Character

基本数据类型转换成字符串
基本数据类型+””
基本数据类型.toString(基本数据类型值)
如: Integer.toString(34) 34整数变成”34”
Integer i=new Integer(“123”)
int num=i.intValue()

字符串转成基本数据类型
xxx a=Xxx.parseXxx(String)

十进制转成其他进制
toBinaryString();
toHexString();
toOctalString()

其他进制转成十进制
ParseInt(Stirng,radix)
这里写图片描述

jdk1.5后出现的新特性
Integer x=4;//自动装箱
x=x+2;//进行自动拆箱,变成了Int类型,和2进行加法运算,再将和进行装箱赋给x.

Integer a=127;
Integer b=127;
System.out.println(a==b);//结果为true,因为a和b指向了同一个integer对象
//因为当数值在Byte范围内容,对于新特性,如果该数值已经存在,
//不会开辟新空间

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员——java基础之string及集合

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------    前记:这篇写的比预期时间晚了1天多,因为中间有事耽误了一天。另外参阅了其他同学的博客,发现...

java基础学习--String类,StringBuffer和基本数据包装类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、String类 用于描述字符串事物,提供了多个方法对字符串进行操作。字符串是一个特殊的对...

黑马程序员——Java基础---String类和基本数据类型包装类

第一讲     String类 一、概述         String是字符串的类类型,用于描述字符串事物。字符串是一个特殊的对象。特殊之处就在于:  ...

黑马程序员——java基础String类

------- android培训、java培训、期待与您交流! ---------- 一、概述         String是字符串的类类型,用于描述字符串事物。字符串是...

黑马程序员——Java基础---String类和基本数据类型包装类

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-第一讲 String类一、概述String是字符串的类类型,用于描述字符串事物。字符串是一个特殊的对象。特...

黑马程序员——java基础---String类和基本数据类型包装类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、String类 1、概述 String是字符串的类类型,用于描述字符串事物。字符串是一...

黑马程序员——Java基础——String类

点击打开链接 点击打开链接 Java培训、Android培训、iOS培训、.Net培训、期待与您交流!">点击打开链接 点击打开链接

黑马程序员——java基础——String类和IO

String类和IO流,信息量比较大,得慢慢消化。

黑马程序员——java语言基础部分——String、StringBuffer StringBuild学习笔记一

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 概述:        String类代表字符串。        StringBuffer类...

黑马程序员——Java基础——String类的学习

String 的构造函数: String() String(byte[] bytes) 使用字节数组构建字符串对象 String(byte[] bytes, int offset, int lengt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)