zoukankan      html  css  js  c++  java
  • String类、static关键字、Arrays类、Math类

    String类、static关键字、Arrays类、Math类

    1.字符串不变:字符串的值在创建后不能被更改(注意 是值不能被更改 因为值是存放在常量池中的
    字符串改变 改变的是指向  只是指针从一个值指向了另外一个值)
    String s1="abc";
    s1+="d";
    System.out.println(s1);
    //内存中有abc abcd两个字符串常量 s1从指向abc改变为指向了abcd
    
    2.因为String对象是不可变的,所以它们可以被共享
    String s1="abc";
    String s2="abc";
    System.out.println(s1==s2);
    //注意==比较的是地址 内存中只有一个abc对象被创建 同时被s1和s2共享
    //注意 String底层就是由字符数组实现的char[]
    
    构造方法:
    public String():初始化新创建的String对象,以使其表示空字符序列
    public String(char[] value):通过当前参数中的字符数组来构造新的String
    public String(byte[] bytes):通过使用ASCII码字符集解码当前参数中的字节数组来构造String
    
    //无参构造
    String str=new String();
    //通过字符数组构造
    char[] ch={'a','b','c'};
    String str2=new String(ch);
    System.out.println(str2);  //abc
    
    //通过字节数组构造
    byte[] bs={97,98,99};
    String str3=new String(bs);
    System.out.println(str3); //abc
    

    常用方法

    public boolean equals (Object anObject):将此字符串与指定对象进行比较(值比较)
    public boolean equalsIgnoreCase (String anotherString):将此字符串与指定对象进行比较,忽略大小写
    案例:双等(==)和equals的区别
    String name="admin";
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入用户名:");
            String username=sc.next();
            //if(name.equals(username)){
            //注意 ==比较的是两个变量的地址 而sc.next()所输入的字符串
            //实例上是这样实现的new String()的过程 弟子不一样
            if(name==username){
                System.out.println("success");
            }else{
                System.out.println("error");
    }
    
    2.获取功能的方法:
    public int length():返回此字符串的长度
    public String concat(String str):将指定的字符串连接到该字符串上
    public char charAt(int index):返回指定索引处的char值
    public int indexOf(String str):返回指定子字符串第一次出现在该字符串内的索引
    publci String substring(int begin):返回一个子字符串,从begin开始截取字符串到字符结尾,
    有两个参数时左闭右开
    //获取后缀名
    String filename="shgdg.java";
    System.out.println(filename.substring(filename.lastIndexOf(".")));
    
    转换功能的方法
    public char[] toCharArray():将此字符串转化为新的字符数组
    public byte[] getBytes():使用平台的默认字符集将该String编码转化为新的字节数组
    public String replace(target,replacement):将与target匹配的字符串使用replacement字符串替换
    
    String str="abcde";
    //将字符串转化为字符数组
    char[] ch=str.toCharArray();
    for (int i = 0; i <ch.length ; i++) {
        System.out.println(ch[i]);
    }
    //将字符串转化为字节数组
    byte[] bytes= str.getBytes();
    for (int i = 0; i <bytes.length ; i++) {
        System.out.println(bytes[i]);
    }
    //替换字母it为大写的IT
    String str1="itcast itheima";
    String replace=str1.replace("it","IT");
    System.out.println(replace);
    
    3.分割功能的办法
    public String[] split(String regex):将此字符串按照给定的regex(规则)拆分为字符串数组
    
    String str="aa bb cc";
    String[] strArray= str.split(" ");
    for (int i = 0; i <strArray.length ; i++) {
        System.out.print(strArray[i]+"	");
    }
    
    4.String类的练习
    //拼接字符串 把数组{1,2,3}按照指定格式拼接成一个字符串
    int [] arr={1,2,3};
    String s=arrayToString(arr);
    System.out.println(s); //[1#2#3]
    public static String arrayToString(int[] arr){
            //创建字符串s
            String s=new String("[");
            //遍历数组,并拼接字符串
            for (int i = 0; i <arr.length ; i++) {
                if(i==arr.length-1){
                    s=s.concat(arr[i]+"]");
                }else{
                    s=s.concat(arr[i]+"#");
                }
            }
            return s;
    }
    
    //统计字符个数
    //键盘录入一个字符,统计字符串中大小写字母及数字字符个数
    Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个字符串数据:");
            String str=sc.next();
            
            //定义三个统计变量
            int bigCount=0;
            int smallCount=0;
            int numberCount=0;
            
            //遍历字符串,得到每一个字符
            for (int i = 0; i <str.length() ; i++) {
                char ch=str.charAt(i);
                //拿字符进行判断
                if(ch>='A'&& ch<='Z'){
                    bigCount++;
                }else if(ch>='a'&& ch<='z'){
                    smallCount++;
                }else if(ch>='0' && ch<='9'){
                    numberCount++
                }else{
                    System.out.println("该字符"+ch+"非法");
                }
    }
    

    static关键字

    概述:static关键字 ,它可以用来修饰成员变量和成员方法,被修饰的成员是属于类的,而不单单是属于
    某个对象的。也就是说,既然属于类,就可以不靠创建对象来进行调用了。
    1.类变量:使用static关键字修饰的成员变量 格式:(访问修饰符) static (访问修饰符) 数据类型 变量名
    
    2.静态方法:当static修饰成员方法时,该方法称为类方法。静态方法在声明中有static,不建议使用类名
    来进行调用,而不需要创建类的对象。
    定义格式:访问修饰符 static 返回值类型 方法名(参数列表){}
    静态方法调用的注意事项:
    静态方法可以直接访问类变量和静态方法
    静态方法不能直接访问普通成员变量或者成员方法,反之,成员方法可以直接访问类变量或静态方法
    静态方法中,不能使用this关键字
    静态原理图解:
    是随着类的加载而加载的,且只加载一次
    存储于一块固定的区域(静态区),所以,可以直接被类名调用
    它优先于对象存在,所以,可以被所有对象共享
    
    静态代码块;定义在成员位置,使用static修饰的代码块{}
    位置:类中方法外
    执行:随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行
    

    Arrays类

    此类包含永安里操作数组的各种方法,比如排序和搜索,所有方法均为静态方法
    public static String toString(int [] a):返回指定数组内容的字符串表示形式
    public static void sort(int [] a):堆指定int型数组按照数字升序进行排列
    

    Math类

    public static double abs(double a):返回double值的绝对值
    public static double ceil(double a):向上取整
    public static double floor(double a):向下取整
    public static long round(double a):四舍五入
    请使用 Math 相关的API,计算在 -10.8 到 5.9 之间,绝对值大于 6 或者小于 2.1 的整数有多少个?
    //定义最小值
    double min=-10.8;
    //定义最大值
    double max=5.9;
    //定义变量计数
    int count=0;
    for (double i = Math.ceil(min); i <=Math.floor(max) ; i++) {
         if(Math.abs(i)>6 || Math.abs(i)<2.1){
              count++;
          }
    }
    System.out.println("个数为:"+count); //9
    
  • 相关阅读:
    新手Cocoa&Objectivec的进阶
    设计模式六大原则
    仿IOS Launch 欢迎界面
    新手开发IOS的疑惑,待补充
    Windows xp系统Hal.dll文件损坏的解决办法
    上班五年了!总结一下收获篇
    关于理财:摘自“华夏基金网”
    《雪》
    上班五年了!总结一下性格篇
    索尼爱立信M608C使用心得!
  • 原文地址:https://www.cnblogs.com/gesh-code/p/14545465.html
Copyright © 2011-2022 走看看