码迷,mamicode.com
首页 > 编程语言 > 详细

java学习之数字与字符串

时间:2019-10-13 23:48:54      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:with   eval   字符串转数字   cap   contain   无法   substring   必须   str   

java学习是根据how2j上提供的资料进行整理,如有雷同,很是正常。

封装类

所有的基本类型,都有对应的封装类。

数字封装类

数字封装类有Byte,Short,Integer,Long,Float,Double,这些类都是抽象类Number的字类。比如int的封装类是Integer,Integer就叫做封装类。

那基本类型如何转化为封装类。

public class TestNumber{
    public static void main(String[] args){
        int i = 1;
        //基本类型转换为封装类
        Integer it = new Integer(i);
    }
}

那封装类如何转化为基本类型

public class TestNumber{
    public static void main(String[] args){
        int i = 1;
        Integer it = new Integer(i);
        //封装类转换为基本类型
        int i2 = it.intValue();
    }
}

那啥叫自动装箱和拆箱。装箱就是说不需要像上述调用构造方法,通过=就能自动转换成Integer类型。

public class TestNumber{
    public static void main(String[] args){
        int i = 2;
        //自动装箱
        Integer it = i;
    }
}

自动拆箱就是说,不需要调用Integer的intValue方法。通过=就自动转换成int类型,就叫做拆箱。

public class TestNumber{
    public static void main(String[] args){
        Integer it = 5;
        //自动拆箱
        int i = it;
    }

还有一个比较常用的就是Int的最大值和最小值可以通过调用Integer.MAX_VALUE和Integer.MIN_VALUE;

public class TestNumber{
    public static void main(String[] args){
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }
}

练习自动装箱和拆箱

byte a = 3;
short b = 3;
float c = 3;
double d = 3;
//byte自动装箱和拆箱
Byte az=new Byte(a); 或 Byte az = a;
byte ac=az.byteValue(); 或 byte ac = az;
//short自动装箱和拆箱
Short bz = new Short(b);或 Short bz = b;
short bc = bz.shortValue();或short bc = bz;

数字如何转字符串?有考虑过该问题吗。方法有两个。

方法1. 使用String的静态方法valueOf
方法2. 使把基本类型装箱为对象,然后调用对象的toString

public class TestNumber{
    public static void main(String[] args){
        int i = 5;
        
        //方法1
        String str = String.valueOf(i);
        System.out.pringln(str);
        //方法2
        Integer i2 = i;
        String str2 = Integer.toString(i2);
        System.out.println(str2);
    }
}

那字符串转数字呢?

调用Integer的parseInt方法

public class TestNumber{
    public static void main(String[] args){
        String str = '999';
        //调用Integer的parseInt方法
        Integer i = Integer.parseInt(str);
        System.out.println(i);
    }
}

那把浮点型3.14转换为 字符串"3.14",在把字符串“3.14”转换为浮点数3.14

public class TestNumber{
    public static void main(Strign[] args){
        float f = 3.14;
        //使用方法一
        String str = String.valueOf(f);
        //使用方法二
        Float f1 = f;
        String str1 = Float.toString(f1);
        Float f2 = Float.parseFloat(str1);
    }
}

java中还提供一些数学方法,并且以静态方法形式存在,意味着可以直接调用。我举几个常见的。

public class TestNumber{
    public static void main(String[] args){
        float f1 = 5.4f;
        float f2 = 5.5f;
        
        //5.4四舍五入到5
        System.out.println(Math.round(f1));
        
        //5.5四舍五入到6
        System.out.pringln(Math.round(f2));
        
        //得到0-1之间的随机浮点数(取不到1)
        System.out.println(Math.random());
        
        //得到0-10之间的随机数(取不到10),这个比较常用
        System.out.println((int)(Matn.random()*10));
        
        //开方
        System.out.println(Math.sqrt(9));
        
        //次方
        System.out.println(Math.pow(2,4));
        
        //派
        System.out.println(Math.PI);
        
        //自然常数
        System.out.println(Math.E);
    }
}

那如何做到格式化输出?

%s 表示字符串
%d 表示数字
%n 表示换行

代码演示。如下

public class TestNumber{
    public static void main(String[] args){
        String name = "小明";
        int count = 3;
        String title = "一等奖";

        //直接使用+进行字符串连接
        String sentence = name + "获得"+count+"次"+title;
        System.out.println(sentence);
        //使用格式化输出
        String sentence1 = "%s获得%d次%s";
        System.out.printf(sentence1,name,count,title);
    }
}

使用format和printf能够达到一摸一样的效果

public class TestNumber{
    public static void main(String[] args){
        String name = "小明";
        int count = 3;
        String title = "一等奖";

        //直接使用+进行字符串连接
        String sentence = name + "获得"+count+"次"+title;
        System.out.println(sentence);
        //使用格式化输出
        String sentence1 = "%s获得%d次%s";
        System.out.format(sentence1,name,count,title);
    }
}

字符

字符类型的封装类Character。

public class TestChar{
    public static void main(String[] args){
        char c1 = '1';
        //装箱
        Character c = c1; 
        //拆箱
        char c2 =c;
    }
}

那char的封装类Character的常见方法有以下几类。

Character.isLetter('a') //判断是否为字母
Character.isDigit('a') //判断是否数字
Character.isWhitespace(' ')//判断是否为空白
Character.isUpperCase('a') //判断是否为大写
Character.isLowerCase('a') //判断是否为小写
Character.toUpperCase('a') //转换为大写
Character.toLowerCase('A') //转换为小写 

字符类型转化为字符串。

public class TestChar{
    public static void main(String[] args){
        //下面的部分会报错,char无法转换成String
        String a = 'a';
        System.out.println(a);
        //可修改成如下
        String a = Character.toString('a');
        System.out.println(a);
    }
}

会报错,报错内容如下。

TestChar.java:4: 错误: 不兼容的类型: char无法转换为String
        String a = 'a';
                   ^

字符串

创建字符串常见方式有以下三种。

1. 每当有一个字面值出现的时候,虚拟机就会创建一个字符串
2. 调用String的构造方法创建一个字符串对象
3. 通过+加号进行字符串拼接也会创建新的字符串对象


public class TestString{
    public static void main(String[] args){
        String gareen = "盖伦";
        String temmo = new String("提莫");
        char[] cs = new char[]{'小','明'};
        String hero = new String(cs);
        String hero3 = gareen + temmo;
    }
}

String被修饰为final,所以不能被继承。字符串也是不可修改的,不可变。

String str = "张三";
str = "李四";
System.out.println(str); //输出李四,str="李四",是重新引用了一个对象,而不是修改了张三这个对象

字符串常见的方法。

方法 解释
charAt(int index) 获取指定位置的字符
toCharArray() 获取对应的字符数组
subString() 截取字符串
split 根据分隔符进行分割
trim 去掉首尾空格
toLowerCase 全部变成小写
toUpperCase 全部变成大写
indexOf 判断字符串或子字符串出现的位置
contains 是否包含子字符串
replaceAll 替换所有的
replaceFirst 只替换第一个

如何判断是否为同一个对象,可通过==进行判断,看下面的代码。

public class TestString{
    public static void main(String[] args){
        String str1 = "the light";
        String str2 = new String(str1);
        String str3 = "the light";
        System.out.println(str1 == str2);
        System.out.println(str1 == str3);
    }
}

判断内容是否相同。使用equals进行字符串内容的比较,必须大小写一致。equalsIgnoreCase忽略大小写判断内容是否一致。

public class TestString{
    public static void main(String[] args){
        String str1 = "the light";
        String str2 = new String(str1);
        String str3 = "the light";
        String str4 = "THE LIGHT";
        //判断对象是否一致
        System.out.println(str1 == str2);
        System.out.println(str1 == str3);
        //equals内容一样返回true
        System.out.println(str1.equals(str2));
        System.out.println(str1.equals(str4));
        //忽略大小写的比较
        System.out.println(str1.equalsIgnoreCase(str4));
    }
}

判断是否以xx字符串开头,是否以xx结束。

public class TestString1 {

    public static void main(String[] args) {
        String str1 = "the light";

        String start = "the";
        String end = "Ight";

        System.out.println(str1.startsWith(start));//以...开始,得到true
        System.out.println(str1.endsWith(end));//以...结束,得到flase

    }
}

StringBuffer是可变长的字符串。

方法 解释
append 追加
delete 删除
insert 插入
reverse 反转
length 长度
capacity 容量

来看代码。

public class TestString{
    public static void main(String[] args){
        String str1 = "let here";

        StringBuffer sb = new StringBuffer(str1);

        //在最后追加
        sb.append("be light");
        System.out.println(sb);

        //删除4到10之间的字符
        sb.delete(4,10);
        System.out.println(sb);

        //在4插入there
        sb.insert(4,"there ");
        System.out.println(sb);

        //反转
        sb.reverse();
        System.out.println(sb);
    }
}

为什么StringBuffer可以变长,和String内部是一个字符数组一样,StringBuffer也维护一个字符数组。但是,这个字符数组,留有冗余长度。

java学习之数字与字符串

标签:with   eval   字符串转数字   cap   contain   无法   substring   必须   str   

原文地址:https://www.cnblogs.com/yihang996/p/11668867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!