JAVA学习笔记(第六章 数字与字符串)

一、装箱和拆箱

1.封装类

        所有的基本类型,都有对应的类类型

        数字封装类有:Byte,Short,Integer,Long,Float,Double

2.自动装箱

        不需要调用构造方法,通过=符号自动把基本类型转换为类类型就叫装箱。

public class TestNumber {
	public static void main(String[] args) {
		int i = 5;
		//基本类型转换成封装类型
		Integer it = new Integer(i);		
		//自动转换就叫装箱
		Integer it2 = i;		
	}
}

3.自动拆箱

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

public class TestNumber {  
    public static void main(String[] args) {
        int i = 5; 
        Integer it = new Integer(i);         
        //封装类型转换成基本类型
        int i2 = it.intValue();        
        //自动转换就叫拆箱
        int i3 = it;
    }
}

4.最大值,最小值

        int的最大值可以通过其对应的封装类Integer.MAX_VALUE获取。

public class TestNumber {  
    public static void main(String[] args) { 
        //int的最大值
        System.out.println(Integer.MAX_VALUE);
        //int的最小值      
        System.out.println(Integer.MIN_VALUE);          
    }
}

二、字符串转换

1.数字转字符串

        使用String类的静态方法valueOf

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

2.字符串转数字

        调用Integer的静态方法parseInt

public class TestNumber { 
    public static void main(String[] args) {
        String str = "999";         
        int i= Integer.parseInt(str);        
        System.out.println(i);         
    }
}

        其他基本类型与字符串类型的转换类似。

三、数学方法

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

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.println(Math.round(f2));
         
        //得到一个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);
    }
}

四、格式化输出

1.格式化输出

        如果不使用格式化输出,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐
使用格式化输出,就可以简洁明了。

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

2.printf和format

        printf和format能够达到一模一样的效果,在printf中直接调用了format。

3.换行符

        换行符就是另起一行 --- '\n' 换行(newline)
        回车符就是回到一行的开头 --- '\r' 回车(return)
        敲一个回车,实际上是回车换行符
        Java是跨平台的编程语言,同样的代码,可以在不同的平台使用,比如Windows,Linux,Mac
然而在不同的操作系统,换行符是不一样的
        (1)在DOS和Windows中,每行结尾是 “\r\n”;
        (2)Linux系统里,每行结尾只有 “\n”;
        (3)Mac系统里,每行结尾是只有 "\r"。
        为了使得同一个java程序的换行符在所有的操作系统中都有一样的表现,使用%n,就可以做到平台无关的换行。

4. 总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达

public class TestNumber {   
    public static void main(String[] args) {
        int year = 2020;
        //总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达
          
        //直接打印数字
        System.out.format("%d%n",year);
        //总长度是8,默认右对齐
        System.out.format("%8d%n",year);
        //总长度是8,左对齐
        System.out.format("%-8d%n",year);
        //总长度是8,不够补0
        System.out.format("%08d%n",year);
        //千位分隔符
        System.out.format("%,8d%n",year*10000);
  
        //小数点位数
        System.out.format("%.2f%n",Math.PI);
          
        //不同国家的千位分隔符
        System.out.format(Locale.FRANCE,"%,.2f%n",Math.PI*10000);
        System.out.format(Locale.US,"%,.2f%n",Math.PI*10000);
        System.out.format(Locale.UK,"%,.2f%n",Math.PI*10000);          
    }
}

五、字符

        char对应的封装类是Character

1.Character常见方法

public class TestChar { 
    public static void main(String[] args) {
         
        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 a = 'a'; //不能够直接把一个字符转换成字符串
        String a2 = Character.toString('a'); //转换为字符串         
    }
}

2.常见转义

public class TestChar {  
    public static void main(String[] args) {
        System.out.println("使用空格无法达到对齐的效果");
        System.out.println("abc def");
        System.out.println("ab def");
        System.out.println("a def");
          
        System.out.println("使用\\t制表符可以达到对齐的效果");
        System.out.println("abc\tdef");
        System.out.println("ab\tdef");
        System.out.println("a\tdef");
         
        System.out.println("一个\\t制表符长度是8");
        System.out.println("12345678def");
          
        System.out.println("换行符 \\n");
        System.out.println("abc\ndef");
 
        System.out.println("单引号 \\'");
        System.out.println("abc\'def");
        System.out.println("双引号 \\\"");
        System.out.println("abc\"def");
        System.out.println("反斜杠本身 \\");
        System.out.println("abc\\def");
    }
}

六、字符串

1.创建字符串

        字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象
        常见创建字符串手段:
                1. 每当有一个字面值出现的时候,虚拟机就会创建一个字符串
                2. 调用String的构造方法创建一个字符串对象
                3. 通过+加号进行字符串拼接也会创建新的字符串对象

public class TestString { 
    public static void main(String[] args) {
        String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象
         
        String teemo = new String("提莫"); //创建了两个字符串对象
         
        char[] cs = new char[]{'崔','斯','特'};
         
        String hero = new String(cs);//  通过字符数组创建一个字符串对象
         
        String hero3 = garen + teemo;//  通过+加号进行字符串拼接
    }
}

2.immutable

        immutable 是指不可改变的,不可改变的具体含义是指:
                不能增加长度
                不能减少长度
                不能插入字符
                不能删除字符
                不能修改字符
        一旦创建好这个字符串,里面的内容永远不能改变,String 的表现就像是一个常量。

3.字符串长度

        length方法返回当前字符串的长度,可以有长度为0的字符串,即空字符串。

七、操纵字符串

1.  charAt(int index)        获取指定位置的字符;

2.  toCharArray()        获取对应的字符数组;

3.  subString        截取子字符串

        substring(3)//截取从第3个开始的字符串(基0)

  substring(3,5)//截取从第3个开始的字符串(基0),到5的位置的字符串(左闭右开)

4.  split        根据分隔符进行分隔

        split(",")//根据“,”进行分割

5.  trim        去掉首尾空格

6.  toLowerCase         全部变成小写
     toUpperCase         全部变成大写

7.  indexOf ("替换前","替换后")        判断字符或者子字符串出现的位置
     contains("替换前","替换后")         是否包含子字符串

8.  ==        用于判断是否是同一个字符串对象

9.  equals        进行字符串内容的比较,必须大小写一致
     equalsIgnoreCase        忽略大小写判断内容是否一致

10.   startsWith(start)        是否以字符串start串开始                                                                                           endsWith(end)       是否以字符串end结束

八、日期

1.Date类

        注意:是java.util.Date;
                    而非 java.sql.Date,此类是给数据库访问的时候使用的。

(1)时间原点:

        所有的数据类型,无论是整数,布尔,浮点数还是字符串,最后都需要以数字的形式表现出来。日期类型也不例外,换句话说,一个日期,比如2020年10月1日,在计算机里,会用一个数字来代替。
        那么最特殊的一个数字,就是零. 零这个数字,就代表Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。 (为什么是8点,因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时)
        为什么对应1970年呢? 因为1969年发布了第一个 UNIX 版本:AT&T,综合考虑,当时就把1970年当做了时间原点。
        所有的日期,都是以为这个0点为基准,每过一毫秒,就+1。

(2)创建日期对象

public class TestDate { 
    public static void main(String[] args) {
        // 当前时间
        Date d1 = new Date();
        System.out.println("当前时间:");
        System.out.println(d1);

        // 从1970年1月1日 早上8点0分0秒 开始经历的毫秒数
        Date d2 = new Date(5000);
        System.out.println("从1970年1月1日 早上8点0分0秒 开始经历了5秒的时间");
        System.out.println(d2); 
    }
}

(3)getTime

        getTime() 得到一个long型的整数,这个整数代表 从1970.1.1 08:00:00:000 开始 每经历一毫秒,增加1,直接打印对象,会看到 “Tue Jan 05 09:51:48 CST 2016” 这样的格式,可读性较差。

(4)System.currentTimeMillis()

        获得当前日期的毫秒数,常常用来记录程序的运行时间哦!

2.日期格式化

(1)日期转字符串

y 代表年
M 代表月
d 代表日
H 代表24进制的小时
h 代表12进制的小时
m 代表分钟
s 代表秒
S 代表毫秒
public class TestDate {  
    public static void main(String[] args) {
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
        Date d= new Date();
        String str = sdf.format(d);
        System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
         
        SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
        Date d1= new Date();
        String str1 = sdf1.format(d1);
        System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);         
    }
}

        修改SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" )中的内容就能修改日期的输出格式。

(2)字符串转日期

        模式(yyyy/MM/dd HH:mm:ss)需要和字符串格式保持一致,如果不一样就会抛出解析异常ParseException

public class TestDate {  
    public static void main(String[] args) {
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" ); 
        String str = "2016/1/5 12:12:12";
          
        try {
            Date d = sdf.parse(str);
            System.out.printf("字符串 %s 通过格式  yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }          
    }
}

3.Calendar类

        即日历类,常用于进行“翻日历”,比如下个月的今天是多久。

(1)Calendar与Date进行转换

public class TestDate {  
    public static void main(String[] args) {
        //采用单例模式获取日历对象Calendar.getInstance();
        Calendar c = Calendar.getInstance();
          
        //通过日历对象得到日期对象
        Date d = c.getTime();
  
        Date d2 = new Date(0);
        c.setTime(d2); //把这个日历,调成日期 : 1970.1.1 08:00:00
    }
}

(2)翻日历

        add方法,在原日期上增加年/月/日
        set方法,直接设置年/月/日

public class TestDate {
 
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        Date now = c.getTime();
        // 当前日期
        System.out.println("当前日期:\t" + format(c.getTime()));
 
        // 下个月的今天
        c.setTime(now);
        c.add(Calendar.MONTH, 1);
        System.out.println("下个月的今天:\t" +format(c.getTime()));
 
        // 去年的今天
        c.setTime(now);
        c.add(Calendar.YEAR, -1);
        System.out.println("去年的今天:\t" +format(c.getTime()));
 
        // 上个月的第三天
        c.setTime(now);
        c.add(Calendar.MONTH, -1);
        c.set(Calendar.DATE, 3);
        System.out.println("上个月的第三天:\t" +format(c.getTime()));
 
    }
 
    private static String format(Date time) {
        return sdf.format(time);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值