JAVA笔记03

数字与字符串精讲

装箱与拆箱

所有的基本类型都有对应的类类型
比如int对应的类时Integer,这种类就叫做封装类
Integer能表现出一个数有没有赋值,但是int不能表示,int只能表示0但是不能表示null

Number类

所有的数字类的封装类都是Number类的字类
Byte,Short,Integer,Long,Float,Double

类型转换

  • 基本类型转封装类
    Integer i = new Integer(3);
    不需要调用构造方法,通过=符号自动把 基本类型 转换为 类类型 就叫装箱装箱可以且仅可以和对应类进行转换,尽管byte和int可以在小范围自动转换,但是byte没办法直接和Integer进行装箱
    Integer i = 3;
  • 封装类转基本类型
    int i = it.intValue();

简单函数

Byte.MAX_VALUE

字符串转换

数字转字符串

方法一:使用String类的静态方法valueOf
例如:

int i=3;
String str = String.ValueOf(i);

方法二:先把基本类型装箱为对象,然后调用对象的toString

int i = 3;
Integer it = i;
String str = it.toString();

字符串转数字

调用封装类的静态方法parseInt

String str = "999";
int i = Integer.ParseInt(str);

Math的常用方法

方法名作用
round四舍五入
random在零到1之前取随机数,取不到1
random()*10在0到10之间取随机数,取不到10
sqrt()开方
pow()次方
E自然阐述
PIΠ

格式化输出

Sysstem.out.printf(str,参数,参数);
%s字符串%d整数%n换行
对于printf函数来说,printf函数直接调用了format函数,所以format和printf函数最后效果一样

 //总长度,左对齐,补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*1000##0);

字符

*第01章
字符型变量只能存一个字符char a = 'ab’就是错误的。
char对应的封装类是Character

Character常用的方法

方法名作用
isLetter是不是一个字符
isDigit是不是一个数字
isWhitespace是不是空白
isUpperCase是不是大写字符
isLowerCase是不是小写字符

字符转换成字符串类型
String a = ‘a’;是不行的
需要调用Character的toString方法
String a2 = Character.toString(‘a’)

字符串

字符串是一个类,所以我们见到的字符串都是对象,常见的创建字符串对象的方式有三种:
当一个字面值出现的时候,虚拟机就会创建一个字符串。
调用String 的构造方法创建一个字符串对象。
通过+号进行字符串拼接也会创建新的字符串对象

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

immutable && final

String创建的字符串类型是immutable表示:
不能增加长度,不能减少长度,不能插入字符,不能删除字符,不能修改祖父
String类型表现类似于常量

字符串格式化

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

String name ="盖伦";
        int kill = 8;
        String title="超神";
          
        //直接使用+进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差
        String sentence = name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号";
          
        System.out.println(sentence);
         
        //格式化字符串
        //%s表示字符串,%d表示数字,%n表示换行
        String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";
         
   	    String sentence2 = String.format(sentenceFormat, name,kill,title);

length()函数返回字符串长度
字符和数字可以相互转换

字符串常用方法

关键字作用
chatAt获取字符
toCharArray获取对应的字符数组
subString截取子字符串
split分隔,得到的结果是String[]数组
trim去掉首尾空格
toLowerCase/toUpperCase大小写转换
indexOf/lastIndexOf/contains定位
replaceAll/replaceFirst替换

比较字符串

判断字符串是不是相同,不能单纯的使用==。
==是判断是不是同一个对象的方法,对于String类型来说,如果没有新的字面值,String类型是不会创建新的对象的,而真正判断两个字符串内容是不是相等的方法,是使用equals,如果使用euqalsIgnoreCase函数则可以忽略大小写判断内容是不是一致。
是否以字符串开始或者结束,startsWith函数和endsWith函数判断是不是以字符串开始或者结束

StringBuffer

是可变长的字符串
常用方法有:append,delete,reverse,insert,增加删除反转插入
length获取长度 capacity获取当前容量

  • 有关性能的研究

Date类

java.util.Date非java.sql.Date类,此类是给数据库访问使用的
所有的数据类型,无论是整数,布尔,浮点数还是字符串,最后都需要以数字的形式表现出来。

日期类型也不例外,换句话说,一个日期,比如2020年10月1日,在计算机里,会用一个数字来代替。

那么最特殊的一个数字,就是零. 零这个数字,就代表Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。 (为什么是8点,因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时)

为什么对应1970年呢? 因为1969年发布了第一个 UNIX 版本:AT&T,综合考虑,当时就把1970年当做了时间原点。

所有的日期,都是以为这个0点为基准,每过一毫秒,就+1。

创建日期对象

方法一:无参构造,表示当前的事件对象
Date d = new Date();
方法二:有参构造,表示从1970118点开始经历的毫秒数
Date d1 = new Date(5000);

主要方法

  • getTime()得到一个Long类型的数值,表示从1970年1月1日8点开始经历的毫秒数
    可以用来评估程序运行时间

  • System.currentTimeMillis()和Date.getTime()是一样的

日期类型格式化类

SimpleDateFormat类

关键字作用
format日期转字符串
parse字符串转日期
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
  
    public static void main(String[] args) {
          
        //y 代表年
        //M 代表月
        //d 代表日
        //H 代表24进制的小时
        //h 代表12进制的小时
        //m 代表分钟
        //s 代表秒
        //S 代表毫秒
        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);         
    }
}

Calendar类

常用于翻日历,比如下个月的今天是多久
采用单例模式来获取日历对象
Calendar c = Calendar.getInstance();//调用单例函数获取当前的日历对象
Date d = c.getTime()//获取当前的时间
c.setTime(d)//把日历调成日期

获取下个月的今天
c.add(Calendar.MONTH,1)
去年的今天
c.add(Calendar.YEAR,-1)
上个月的第三天
c.add(Calendar.MONTH,-1)
c.set(calendr.Date,3)
获取下个月倒数第三天
c.add(Calendar.DAY_OF_MONTH,-3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值