java基础——字符、字符串和数字

参考:https://how2j.cn/k/number-string/number-string-wrap/22.html?p=136471

一、字符

用数字或者单个字符表示
java中可以直接打印字符型数组,因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void println(char[] x),它会直接调用这个方法来打印,因而可以打印出数组内容(没有中括号,是所有字符拼接起来的一个字符串),而不是地址。

  • 常用方法
		System.out.println(Character.isLetter('a'));//判断是否为字母
        System.out.println(Character.isDigit('a')); //判断是否为数字
        System.out.println(Character.isWhitespace(' ')); //是否是空白
        System.out.println(Character.isUpperCase('a')); //是否是大写
        System.out.println(Character.isLowerCase('a')); //是否是小写
         
        System.out.println(Character.toUpperCase('a')); //转换为大写
        System.out.println(Character.toLowerCase('A')); //转换为小写
 
        String a2 = Character.toString('a'); //转换为字符串

		// 打印字符数组
		Scanner s = new Scanner(System.in);
        String input = s.nextLine(); 
        char[] ch1 = input.toCharArray();    // 字符串转字符数组
        System.out.print(ch1);
        char[] ch2 = {101,'2','9',12};
        System.out.println(ch2);  // e29  直接拼成一个字符串输出

二、字符串

1.字符串
字符串是一个类,不是基础数据类型,String被修饰为final,所以不能被继承;同时是个不可变对象
java中的字符串不能直接索引取值,需要使用str.charAt(index)取到对应索引的字符

  • 声明
    创建方式:字面值,String构造方法,通过+号拼接
        String teemo = new String("提莫"); //创建了两个字符串对象
        char[] cs = new char[]{'崔','斯','特'};
        String hero = new String(cs);//  通过字符数组创建一个字符串对象
  • 常用方法
charAt(int index)  // 获取指定位置的字符
toCharArray()  // 获取对应的字符数组
subString(start[,end])  //截取子字符串
split(String str)  // 切割字符串
trim()   // 去掉首尾空格
toLowerCase()   //全部变成小写 
toUpperCase()  // 全部变成大写
indexOf(String str)  // 字符或者子字符串首次出现的位置
lastIndexOf(String str)  // 字符或者子字符串最后出现的位置
contains(String str)  // 是否包含子字符串
replaceAll(String str1,String str2)   // 替换所有的 
replaceFirst(String str1,String str2)  // 只替换第一个
    
//==用于判断是否是同一个字符串对象
    String str1 = "the light";
	String str2 = new String(str1);
    System.out.println( str1  ==  str2);  //false
    String str3 = "the light";
    System.out.println( str1  ==  str3);  // true
	
str1.equals(str2)    //进行字符串内容的比较,必须大小写一致 
str1.equalsIgnoreCase(str2)    // 忽略大小写判断内容是否一致
str1.startsWith(str2)  //判断是否以str2开始
str1.endsWith(str2)    //判断是否以str2结尾

2.StringBuffer
可变长的字符串,提供方法:append追加,delete 删除,insert 插入,reverse 反转,字符串拼接的效率极高

和String内部是一个字符数组一样,StringBuffer也维护了一个字符数组。 但是,这个字符数组,留有冗余长度
比如说new StringBuffer(“the”),其内部的字符数组的长度,是19,而不是3,这样调用插入和追加,在现成的数组的基础上就可以完成了。如果追加的长度超过了19,就会分配一个新的数组,长度比原来多一些,把原来的数据复制到新的数组中,看上去 数组长度就变长了
length: “the”的长度 3
capacity: 分配的总空间 19 ,19:字符串长度+16,不同的JDK数量是不一样的

		String str1 = "let there ";
        StringBuffer sb = new StringBuffer(str1); //根据str1创建一个StringBuffer对象
        sb.append("be light"); //在最后追加
        sb.delete(4, 10);//删除4-10之间的字符
        sb.insert(4, "there ");//在4这个位置插入 there
        sb.reverse(); //反转

		System.out.println(sb.length()); //内容长度
        System.out.println(sb.capacity());//总空间

3.格式化输出

使用printf或者format,%s 表示字符串;%d 表示数字;%n 表示换行

		String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";
		//使用printf格式化输出
		System.out.printf(sentenceFormat,name,kill,title);
		System.out.format("%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n",name,kill,title);

		int year = 2020;
        System.out.format("%8d%n",year);    //总长度是8,默认右对齐
        System.out.format("%-8d%n",year);    //总长度是8,左对齐
        System.out.format("%08d%n",year);    //总长度是8,不够补0
        System.out.format("%,8d%n",year*10000);    //千位分隔符
        System.out.format("%.2f%n",Math.PI);    //小数点位数

三、数字

1.封装类

所有的基本类型,都有对应的类类型 ,比如int对应的类是Integer
数字封装类有:Byte,Short,Integer,Long,Float,Double ,这些类都是抽象类Number的子类

public static void main(String[] args) {
    	int i = 5;
        //基本类型转换成封装类型
        Integer it = new Integer(i);
        //自动转换就叫装箱
        Integer it2 = i;
        //封装类型转换成基本类型
        int i2 = it.intValue();
        //自动转换就叫拆箱
        int i3 = it;
    
    	//int的最大值
        System.out.println(Integer.MAX_VALUE);
        //int的最小值      
        System.out.println(Integer.MIN_VALUE);
    }

2.数字、字符串互转

		// 1.数字转字符串
		int i = 5;
        String str = String.valueOf(i);    //方法1:String.valueOf(i)
		Integer it = i;
        String str2 = it.toString();    //方法2:先转包装类,再调用toString方法

		// 2.字符串转数字
		float a = 3.14f;
        String b = String.valueOf(a);
        float c = Float.parseFloat(b);  // Integer.parseInt(str)

3.计算
java.lang.Math提供了一些常用的数学运算方法,并且都是以静态方法的形式存在

    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.println(Math.round(f2));
        float a = 1.637f;
        System.out.printf("%.2f",a);  // 这个会自动四舍五入
         
        //得到一个0-1之间的随机浮点数(取不到1)
        System.out.println(Math.random());
        //得到一个0-10之间的随机整数 (取不到10)
        System.out.println((int)( Math.random()*10));
        
        //开方
        System.out.println(Math.sqrt(9));
        //次方(2的4次方)
        System.out.println(Math.pow(2,4));
         
        //π
        System.out.println(Math.PI);
        //自然常数
        System.out.println(Math.E);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值