zoukankan      html  css  js  c++  java
  • Java基础之字符串

    字符串

    字符串的特点:

    • 字符串的内容用不可变

    • 正是因为字符串不可改变,所以字符串是可以共享使用的

    • 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组

    创建字符串的3+1种方法

    1. public String() 创建一个空白字符串,不含有任何内容

    2. public String(char[] array) 根据字符数组的内容,来创建对应的字符串

    3. public String(byte[] array) 根据字节数组的内容,来创建字符串

    package com.dcits.day07.demo01;
    ​
    public class Demo01String {
        public static void main(String[] args) {
            // 使用空参构造
            String str1 = new String();
            System.out.println(str1);
            // 根据字符数组创建
            char[] charArray = {'a','b','c'};
            String str2 = new String(charArray);
            System.out.println("第二个字符串" + str2);
            // 根据字节数组串讲
            byte[] byteArray = {97,98,99};
            String str3 = new String(byteArray);
            System.out.println(str3);
            // 直接创建
            String str4 = "hello";
            System.out.println(str4);
        }
    }

    字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中

    对于基本类型来说,==是进行数值的比较

    对于引用来说,==是进行地址的比较

    字符串中的方法:

    1.equals

    package com.dcits.day07.demo02;
    ​
    public class Demo01Equals {
        public static void main(String[] args) {
            String str1 = "hello";
            String str2 = "hello";
            char[] array = {'h','e','l','l','o'};
            String str3 = new String(array);
    ​
            System.out.println(str1.equals(str2));
            System.out.println(str2.equals(str3));
            System.out.println(str3.equals("hello"));
            System.out.println("hello".equals(str1));
        }
    }

    2.public int length() 获取字符串中含有的字符个数,拿到字符串的长度

    3.public String concat(String str) 将当前字符串和参数字符串拼接成为返回值新得字符串

    4.public char charAt(int index) 获取索引位置的单个字符。(索引从0开始)

    5.public int indexof(string str) 查找参数字符串在本地字符串当中首次出现的索引位置,如果没有返回-1值

    package com.dcits.day07.demo02;
    ​
    public class Demo02StringGet {
        public static void main(String[] args) {
            // 获取字符串的长度
            int length = "zczxcasadsadadsad".length();
            System.out.println("字符串的长度:" + length);
    ​
            // 拼接字符串
            String str1 = "hello";
            String str2 = "world";
            String str3 = str1.concat(str2);
            System.out.println(str1);
            System.out.println(str2);
            System.out.println(str3);
            
            // 获取指定索引位置的单个字符
            char ch = "Hello".charAt(1);
            System.out.println("在1号索引位置的字符是:" + ch);
    ​
    ​
            // 查找参数字符串在本来字符串当中出现的第一次索引位置
            // 如果根本没有,就返回 -1 值
            String original = "HelloWorld";
            int index = original.indexOf("llo");
            System.out.println("第一次的索引值是:" + index);
    ​
            System.out.println("HelloWOrld".indexOf("abc"));
        }
    }

    6.public String substring(int index) 截取从参数位置一直到字符串末尾,返回新字符串

    public String substring(int begin,int end) 截取从begin开始,一直到end结束,中间的字符串

    注意: [begin,end) 包含左边,不包含右边

    package com.dcits.day07.demo02;
    ​
    public class Demo03Substring {
        public static void main(String[] args) {
            String str1 = "HelloWorld";
            String str2 = str1.substring(5);
            System.out.println(str1);
            System.out.println(str2);
            
            String str3 = str1.substring(4,7);
            System.out.println(str3);
            
            String strA = "Hello";
            System.out.println(strA);
            strA = "Java";
            System.out.println(strA);
            
        }
    }

    7.public char[] toCharArray() 将当前字符串拆分为字符数组作为返回值

    public byte[] getBytes() 获得当前字符串底层的字节数组

    public String replace(CharSequence oldString,CharSequence newString) 将所有出现的老字符串替换成为新的字符串 ,返回替换之后的结果新字符串

    注意:CharSequence意思就是说可以接受字符串类型

    package com.dcits.day07.demo02;
    ​
    public class Demo04Convert {
        public static void main(String[] args) {
            // 转换成为字符数组
            char[] chars = "Hello".toCharArray();
            System.out.println(chars[0]);
            System.out.println(chars.length);
    ​
            // 转换成为字节数组
            byte[] bytes = "abc".getBytes();
            for (int i = 0; i < bytes.length; i++) {
                System.out.println(bytes[i]);
            }
    ​
            // 字符串的内容替换
            String str1 = "How do you do?";
            String str2 = str1.replace("o","*");
            System.out.println(str1);
            System.out.println(str2);
    ​
            String lang1 = "会不会玩呀,你大爷的!";
            String lang2 = lang1.replace("你大爷的","****");
            System.out.println(lang2);
        }
    }

    8.public String[] split(String regex) 按照参数的规则,将字符串切分成为若干部分

    注意:split方法的参数其实是一个“正则表达式”,如果按照英文句点进行切割,需要写成 \.

    package com.dcits.day07.demo02;
    ​
    public class Demo05Split {
        public static void main(String[] args) {
            String str1 = "aa,bbb,ccc,ddd";
            String[] array1 = str1.split(",");
            for (int i = 0; i < array1.length; i++) {
                System.out.println(array1[i]);
            }
    ​
            String str3 = "XXX.YYY.ZZZ";
            String[] array3 = str3.split("\.");
            for (int i = 0; i < array3.length; i++) {
                System.out.println(array3[i]);
            }
    ​
        }
    }

    静态static关键字

    一旦使用了static关键字,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享一份

    一旦使用了static修饰成员方法,那么这就成为了静态方法,静态方法并不属于对象,而是属于类的。对于静态方法来说可以进行对象名来调用,也可以直接通过类名称调用

    无论是成员变量还是成员方法,如果有了static,都推荐使用类名称进行调用。

    • 静态变量:类名称.静态变量

    • 静态方法:类名称.静态方法

    注意:

    1. 静态不能直接访问非静态

    2. 静态方法中不能使用this

    //
    package com.dcits.day07.demo03;
    ​
    public class myClass {
        int age;
        static String name;
        public void method() {
            System.out.println("这是一个普通的成员方法");
            // 成员方法可以访问静态变量
            System.out.println(age);
            System.out.println(name);
        }
        public static void methodStatic() {
            System.out.println("这是一个静态方法");
            System.out.println(name);
            // 静态方法不能访问成员变量
            System.out.println(age);
        }
    }
    // 调用
    package com.dcits.day07.demo03;
    ​
    public class Demo02StaticMethod {
        public static void main(String[] args) {
            myClass obj = new myClass();
            obj.method();
    ​
            // 对于静态方法来说可以进行对象名来调用,也可以直接通过类名称调用
            myClass.methodStatic();
            // 不推荐
            obj.methodStatic();
            // 对于本类中的静态方法,可以省略类名称
            myMethod();
        }
        public static void myMethod() {
            System.out.println("自己的方法");
        }
    ​
    }
    ​

    静态内存图:

    静态代码块

    特点:当第一次用到本类时,静态代码块执行唯一的一次,静态代码块比构造方法先执行

    // Person类
    package com.dcits.day07.demo03;
    ​
    public class Person {
        // 静态代码块的内容
        static {
            System.out.println("静态代码块执行!!");
        }
        public Person () {
            System.out.println("构造方法执行啦!");
        }
    }
    // 调用
    package com.dcits.day07.demo03;
    ​
    public class Demo04Static {
        public static void main(String[] args) {
            Person one = new Person();
            Person two = new Person();
        }
    }
    // 静态代码块执行!!
    // 构造方法执行啦!
    // 构造方法执行啦!

    数组工具类Arrays

    注意:

    • 排序时,如果是数值,sort默认按照从小到大,

    • 如果是字符串,sort默认按照字母升序

    • 如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持

    package com.dcits.day07.demo04;
    ​
    import java.util.Arrays;
    ​
    public class Demo01Arrays {
        public static void main(String[] args) {
            // Arrays中的默认格式转换成为字符串
            int[] Array = {10,20,30};
            String intStr = Arrays.toString(Array);
            System.out.println(intStr);
            
            // Arrays中的排序方法
            int[] array1 = {2,6,1,3,5};
            Arrays.sort(array1);
            System.out.println(Arrays.toString(array1));
    ​
            String[] array2 = {"bbb","aaa","ccc"};
            Arrays.sort(array2);
            System.out.println(Arrays.toString(array2));
        }
    }

    数学工具类

    package com.dcits.day07.demo04;
    ​
    public class Demo03Math  {
        public static void main(String[] args) {
            // 获取绝对值
            System.out.println(Math.abs(-2.1));
    ​
            // 向上取整
            System.out.println(Math.ceil(3.1));
    ​
            // 向下取整
            System.out.println(Math.floor(3.9));
    ​
            // 四舍五入
            System.out.println(Math.round(20.5));
            System.out.println(Math.round(3.33));
    ​
            // Π
            System.out.println(Math.PI);
    ​
    ​
        }
    }
  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/guoruijie/p/13295055.html
Copyright © 2011-2022 走看看