import java.util.Arrays;
class Demo5
{
    public static void main(String [] args)
    {
        String name1="hello world";
        String name2="hello world";
        String name3=new String("hello world");
        String name4=new String("hello world");
        System.out.println( name1==name2 );//true
        System.out.println( name3==name4 );//false

        System.out.println("字符串的查找----------------------------------------");

        System.out.println("字符串的使用!String");
        System.out.println(name1.length()+":字符串的长度");
        System.out.println(name1.charAt(3)+":返回指定下标的字符");
        System.out.println(name1.indexOf('o')+":通过字符找到字符的下标");
        System.out.println(name1.lastIndexOf('o')+":返回最后一个字符的下标");

        System.out.println("字符串的判断-----------------------------------");

        String s="";
        System.out.println(s.isEmpty());//true  长度为0返回true 否则返回false
        String fileName="Demo1.java";
        System.out.println(fileName.endsWith(".java"));//判断某个是否已某个字符串结尾
        System.out.println(fileName.contains("java"));//判断是否包含某个字符串
        System.out.println(fileName.equals("java"));//false
        System.out.println("java".equals("java"));//true
        System.out.println("java".equalsIgnoreCase("JaVa"));//true忽略大小写比较

        System.out.println("字符串转换---------------------------------------");
        String str=new String(new char[]{'a','b','c','d','e'});
        System.out.println(str);

        char[] charArr=str.toCharArray();//字符串装换成字符数组
        System.out.println(Arrays.toString(charArr));

        String strBy=new String(new byte[]{97,98,99});
        System.out.println(strBy);
        byte [] byteArr=strBy.getBytes();
        System.out.println(Arrays.toString(byteArr));//字符串转换成byte数组

        System.out.println("字符串替换---------------------------------------");

        String strRe="hello world !";
        System.out.println(strRe.replace("world","java"));//都会重新创建一个对象,原来的 对象不会改变

        System.out.println("字符串切割---------------------------------------");
        String strSpl="hello world !";
        String[] strArraySpl=strSpl.split(" ");
        System.out.println(Arrays.toString(strArraySpl));

        System.out.println("字符串子串------------------按照指定顺序求字符串的一部分---------------------");
        String strSub="hello world !";
        System.out.println(strSub.substring(3));//也是产生新的字符串
        System.out.println(strSub.substring(3,9));//假如超过了字符串的长度,那么用"空"表示
        //System.out.println(strSub.subString(6,4))//运行时报错可以大于等于前面一个下标

        System.out.println("字符串大小转换---------------------------------------");
        String strUp="HELLO world";
        System.out.println(strUp.toUpperCase());
        System.out.println(strUp.toLowerCase());

        System.out.println("字符串去除两边空格---------------------------------------");
        String strTr="  hello world !  ";
        System.out.println(strTr.trim());

        //trim的实现  数组里面的length是属性不是方法
        String strTrm="  hello world !    ";
        char[] charTr=strTrm.toCharArray();
        int start=0;
        int end=charTr.length;
        for(int i=0;i<charTr.length;i++){
            if(charTr[i]==' ')
                start++;
            else
                break;
        }
        for(int i=charTr.length-1;i>=0;i--)
        {
            if(charTr[i]==' ')
                end--;
            else
                break;
        }
        System.out.println(strTr.substring(start,end+1));
    }

    /* string 对象的创建: String name1="my";是放在内存常量区中
        方式1: string对象是放在常量池中的一块内存地址
            放置之前先检查该区域是否已经放有该常量,如果有,直接返回地址 

        方式2:String name3=new String("my");
            这个是放在堆内存里面的,创建出来的对象是不相等的,因为内存地址不一样 

        String特点:
            1、由于字符串底层是由一个字符数组来实现的,所以String是不可变的
            2、String 重写了Object的hashCode方法
                == 表示比较的是地址

        String 常用的方法:

    */
}
class Demo7
{
    public static void main(String[] agrs)
    {
        System.out.println("String的自然排序!");

        String strA="abc";
        String strB="bcd";
        System.out.println(strA.compareTo(strB));//strA在strB的前面 (c-d)=-1返回负数

        String strC="abc";
        String strD="abcdw";
        System.out.println(strC.compareTo(strD));//返回-2 :3-5                

        String strE="abc";
        String strF="afd";
        System.out.println(strE.compareTo(strF));//(b-f)=-4

        String strG="dmmmabc";
        String strH="afdmmmmmmmmmmmm";
        System.out.println(strG.compareTo(strH));//(d-a)=3
    }
}

/*
    compareTo方法
        原理:
            1、该方法的调用者在传递参数字符串的前面,返回负数
               该方法的调用者在传递参数字符串的后面,返回正数
               如果相等返回0

            2、当调用者和参数只有一个字母,其实就是字母对应的码表的整数减法操作

    比较规则:
        1、两个字符串长度相等
            比较的字符:找到最开始不同字符进行比较,相减返回

        2、两个字符串长度不相等
            有相同字符:  比较的两个字符串的长度

            没有相同字符:比较最开始两个字符的

*/

java String常见的处理的更多相关文章

  1. java string常见操作题

    1. 每个基本类型封装类都有将string转换为基本数据类型的方法 对于非常大的数字请使用Long,代码如下 int age = Integer.parseInt("10");  ...

  2. java string常见操作(二)

  3. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

  4. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  5. java String.split()函数的用法分析

    java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,195 次 在java.lang包中有String.spl ...

  6. 通过反编译深入理解Java String及intern(转)

    通过反编译深入理解Java String及intern 原文传送门:http://www.cnblogs.com/paddix/p/5326863.html 一.字符串问题 字符串在我们平时的编码工作 ...

  7. Java OOM 常见情况

    Java OOM 常见情况 原文:https://blog.csdn.net/qq_42447950/article/details/81435080 1)什么是OOM?  OOM,全称“Out Of ...

  8. Java英文单词Java基础常见英语词汇

    Java英文单词Java基础常见英语词汇(共70个)                                                                          ...

  9. Java总结——常见Java集合实现细节(1)

    Java提高——常见Java集合实现细节(1) 2018年04月18日 15:07:35 阅读数:25 集合关系图 Set和Map set代表一种集合元素无序.集合元素不可重复的集合 map代表一种由 ...

随机推荐

  1. 工欲善其事必先利其器---SQL在线可视化模型设计,(还可学习拖拽知识)

    作为技术人员,在开发项目中,不可避免的要跟数据库打交道,一个完整的项目正常情况下是讨论完整体需求,有了大致的框框在脑海中后,是需要设计合理的数据库的,这时会有其他的专业的UML建模工具可以使用, 但是 ...

  2. dedecms友情链接flink的调用方法

    标记名称:flink[标签简介][功能说明]:用于获取友情链接,其对应后台文件为"includetaglibflink.lib.php".[适用范围]:全局标记,适用V55,V56 ...

  3. 异常处理:你不可能总是对的 - 零基础入门学习Python032

    异常处理:你不可能总是对的 让编程改变世界 Change the world by program 因为我们是人,不是神,所以我们经常会犯错.当然程序员也不例外,就算是经验丰富的码农,也不能保证写出来 ...

  4. nyoj-366-D的小L(求全排列)

    D的小L 时间限制:4000 ms  |  内存限制:65535 KB 难度:2 描述       一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡 ...

  5. Java中读取文件

    Java中读取文件,去除一些分隔符,保存在多维数组里面 public void readFile(String filePath) { File file=new File(filePath); Ar ...

  6. BZOJ 2521 最小生成树(最小割)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2521 题意:每次能增加一条边的权值1,求最小代价让一条边保证在最小生成树里 思路:如果两个点中有环, ...

  7. HDU 2457 DNA repair (AC自动机+DP)

    题意:给N个串,一个大串,要求在最小的改变代价下,得到一个不含上述n个串的大串. 思路:dp,f[i][j]代表大串中第i位,AC自动机上第j位的最小代价. #include<algorithm ...

  8. android的原理--为什么我们不需要手动关闭程序

    内容搜集自网络,有所删改       不用在意剩余内存的大小,其实很多人都是把使用其他系统的习惯带过来来了.android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系.如果你知 ...

  9. LeetCode C++ 解题报告

    自己做得LeetCode的题解,使用C++语言. 说明:大多数自己做得,部分参考别人的思路,仅供参考; GitHub地址:https://github.com/amazingyyc/The-Solut ...

  10. 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅱ

    2.4.2初级实现 我们知道,基础数据结构是实现优先队列的起点.我们可以是使用有序或无序的数组或链表.在队列较小时,大量使用两种主要操作之一时,或是所操作元素的顺序已知时,它们十分有用.因为这些实现相 ...