04-类库

  • Java API
  • Object类
  • Class类
  • System类
  • 封装类
  • Integer类
  • Character类
  • String类
  • StringBuffer类
  • Math类
  • Random类
  • TimeZone类
  • Date类
  • Calendar

Java API:

  1. 概念:Java应用程序编程接口,即Java API.
    使用:java语言属于面向对象的语言,一切皆对象.java程序的所有操作都需要围绕对象进行.
  2. 如何使用一个陌生的类:
    • 先尝试模拟java对象
    • 操作java对象,调用方法和属性

Object类:

  1. 概念:java系统中使用Object类表示对象.Object类是所有java对象的直接或间接父类,是整个java系统的根类[祖先]

  2. 常用方法:

    • clone():
      • 作用: 复制对象的数据,粘贴到新的对象中.[1.子类重写clone() 2.被克隆对象支持克隆:实现Cloneable接口]
      • 使用:
        1.protected native Object clone() 是受保护的,当前包所有类和其他子类.
        2.因此clone()权限较小,不方便使用.所以子类需要重写该方法,并扩大权限.
        3.java.lang.CloneNotSupportedException: object.User被克隆的对象必须支持被克隆,才能使用clone().被克隆类需要实现Cloneable接口,才能允许被克隆
        public interface Cloneable { } 该接口只是作为一个标示,表示可以被克隆.
        注意: clone实质是创建一个新对象,将原对象的信息赋给新对象.
    • hashCode():
      • 作用: 根据对象的内存地址和哈希算法获得对象的哈希值.
    • toString():
      • 作用: 获得对象的字符串表示形式的值.[类全名@哈希值的16进制值]
    • equals():
      • 作用: 匹配当前对象和目标对象是否为同一个对象.
  3. 如何理解一切皆对象?
    Object类表示对象,java系统中所有java对象的根类[直接/间接父类]都为Object类.

  4. 如何确定一个类的父类?
    如果一个类没有显示的继承其他类,那么Object类即为该类的父类.如果一个类继承了其他类,那么其他类即为该类的父类.

  5. 如何比较对象:
    java程序中经常需要比较两个对象是否为同一对象,但是java系统不允许直接访问对象的内存地址,因此提供了几种间接访问的方式.
    比较对象的方法: toString() hashCode() equals() ==[属于运算符]
    直接比较内存地址: == equals()
    通过哈希值比较对象: hashCode() toString()

  6. 问题: 哪种方式比较对象,对象相同时内存地址一定相同?
    hashCode(),toString(),equals()都是方法,方法可以被重写[更改比较标准]
    ==是运算符,所以==不能被更改比较标准. ==永远按照 内存地址 比较对象

Class类:

  1. 概念:Class类表示 java类 / 图纸 的对象,主要封装了 关于设计图纸[类/java文件]的信息: 类名 父类 含有那些方法 含有那些属性 等等.
  2. 特点:
    • private Class() {} 不能在自定义的java类中创建Class对象.
    • Class类提供了三种获得Class对象方式: 对象.getClass() 类名.class() Class.forName()
  3. 常用方法:
    • getName(): 获得设计图纸表示的类的类全名
    • getSimpleName(): 获得设计图纸表示的类的类名
    • isInterface(): 当前设计图纸表示的类是否为接口
    • getSuperclass(): 当前设计图纸表示的类的父类图纸对象.
    • getDeclaredFields(): 获得设计图纸表示的类中的所有属性
    • getDeclaredMethods(): 获得设计图纸表示的类中的所有方法
    • getDeclaredConstructors(): 获得设计图纸表示的类中的所有方法

System类:

  1. 概念:
    System类是java程序中的系统类,主要存储一些系统信息和常用功能

  2. 特性:

    • private System() { },无法直接创建对象.
    • System类中的所有属性和方法都是静态的,因此可以直接使用 类名调用.
    • 提供了标准输入 输出 错误流.
    • err():"标准”错误输出流.默认输出为控制台,打印内容因开发工具显示出红色,打印的错误信息输出的时机不固定.
    • in(): “标准”输入流。 默认输入源为键盘输入
    • out():“标准”输出流。 默认输出为控制台
      说明: java的命名规范中,建议所有的常量的字母都必须大写,但是由于历史原因,这三个属性没有大写.
  3. 常用方法:

    1. currentTimeMillis(): 返回以毫秒为单位的当前时间.[实质返回 从1970.1.1午夜 到此刻的毫秒数]
      作用: 通常可以用于测试程序的性能
    2. getProperties(): 获得当前的系统属性
    3. exit(): 终止当前正在运行的 Java 虚拟机.
      说明:默认情况下,当程序正常执行结束或出现错误会自动停止Java系统.如果需要手动结束java系统,可以使用此方法.
    4. gc(): 运行垃圾回收器.
  4. Java垃圾回收机制:
    当java程序执行时,java系统后台时时监听程序的执行情况.当发现某数据不再被引用/使用时,java系统将尝试回收该数据所占用的系统资源,进行垃圾数据回收.
    但是有时候,java系统并不能准备判断数据是否无用,或者及时监视到无效数据. 因此提供了手动启动垃圾回收器的方法--gc().

封装类:

  1. 为什么使用封装类:
    java中含有8种基本数据类型,但是8种基本数据类型既不是对象,也不面向对象.
    java语言属于面向对象语言,为了更加彻底的面向对象,java系统为8种基本数据类型做了封装,产生了8个封装类.

  2. 封装类:
    基本数据类型: byte short int long float double char boolean;
    封装类: Byte Short Integer Long Float Double Character Boolean.
    总结: 除了int,char,其他基本类型 名称首字母大写 即为 封装类的名字.

  3. Number类:
    Byte Short Integer Long Float Double都属于数字,java对它们编写了一个父类---Number
    Number类主要提供了各种数字类型之间的转换方法.

Integer类:

  1. 特性:
    Integer对象表示一个数字,创建对象必须说明表示的数字,因此没有提供无参构造方法.

  2. 常用属性:
    取值范围的获得: Integer.MIN_VALUE Integer.MAX_VALUE
    占据位数:Integer.size

  3. 常用方法:
    Integer.toBinaryString(2)
    Integer.toOctalString(8)
    Integer.toHexString(16)

  4. 拆箱和装箱:
    拆箱: 由封装类类型数据 转为 基本数据类型数据
    装箱: 由基本数据类型数据 转为 封装类型数据
    手动:
    手动拆箱: intValue()
    手动装箱: valueOf()
    自动:
    从JDK1.5开始,java系统提供了自动拆箱和自动装箱功能

  5. 类型转换: [面向对象方式]
    Byte Short Integer Long Float Double可以直接转换[8种基本类型中除boolean外,其他类型可以相互转换]

Character类:

  1. 概念:
    Character类表示char的封装类,Character对象表示一个字符,创建对象必须说明表示的字符,因此没有提供无参构造方法.

  2. 常用属性:
    取值范围的获得: Character.MIN_VALUE Character.MAX_VALUE
    占据位数:Character.size

  3. 常用方法:
    isDigit():判断字符是否数字
    isLetter():判断字符是否字母
    isLetterOrDigit():判断字符是否数字或字母
    isUpperCase():判断字符是否大写字母
    isLowerCase():判断字符是否小写字母
    isSpace/isWhitespace():判断字符是否为空格
    toLowerCase():将指定字符转为小写
    toUpperCase():将指定字符转为大写
    charAt(索引):获得指定索引处的字符
    toString():获得字符的字符串格式值

  4. 拆箱和装箱:[同Integer]
    手动拆箱: charValue()
    手动装箱: valueOf()

String类:

  1. 概念:
    字符: 指一个符号[数字,字母,汉字,其他符号等等],java系统中char表示.
    字符串[String]: 由多个字符组成,java系统中String类表示.

  2. 区别:
    1.char属于基本数据类型,String属于引用类型.[String类,属于Java类]
    2.char类型数据必须被单引号包裹,String类型数据必须被双引号包裹. 'A' "A"

  3. String类特点:

    1. Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现
    2. 创建String对象: new String("字符串内容") 或 "字符串内容"
    3. 当使用直接量语法创建String对象时,java系统会先搜索字符串常量池中同一字面值的String对象,找到后将返回该对象,不再重新创建String对象.
    4. String类重写了equals(),按照字面值比较两个String对象.
    5. String对象中字符串值确定后将无法更改[底层是一个字符数组类型的常量],如果更改将产生新的字符串对象.
  4. String常用的方法:

    • equals() String类重写了该方法,只要字面值相同即可.
    • concat("字符串")当前字符串与指定内容拼接为新的String对象
    • length() 获得字符串的长度(字符个数)
    • charAt(索引) 返回指定索引的字符
    • indexOf('字符') 从左到右数搜索,返回指定字符的索引
    • indexOf("字符串") 从左到右数且从指定的索引处搜索,返回指定字符串的索引
    • lastIndexOf 用法同indexOf,只是从后先前搜索
    • startsWith("字符串") 配置是否以指定的字符串开头
    • endsWith("字符串") 配置是否以指定的字符串结尾
    • contains("字符串") 配置是否包含指定的字符串
    • replace("目标字符串","替换值") 配置是否包含指定的字符串,如果有,替换字符串为指定内容
    • toLowerCase/toUpperCase() 将字符串所有字母替换为小写/大写字母

StringBuffer类:

  1. 概念:
    String表示字符串,String对象表示的字面值固定后将无法更改,否则将产生新的String对象.
    StringBuffer表示带有缓冲区的字符串,StringBuffer表示的字面值可以更改,不产生新的StringBuffer对象.

  2. 创建StringBuffer:
    new StringBuffer();//创建StringBuffer对象,默认缓冲容量为16
    new StringBuffer("ABC123");//创建StringBuffer对象,默认缓冲容量为16+内容长度
    new StringBuffer(23);//创建StringBuffer对象,默认缓冲容量为指定容量

  3. 缓冲区容量:
    缓冲区字符个数 容量
    16>=字符个数>0 16
    34>=字符个数>16 34
    字符个数>34 34++

  4. StringBuffer常用方法:

    • capacity() 获得StringBuffer对象的缓冲区大小
    • length() 获得缓冲区中字符串的长度(字符个数)
    • toString() 将StringBuffer对象转为String对象
    • append(内容) 将指定内容追加到StringBuffer的末尾
    • insert(索引,内容) 将内容插入到指定的索引之后
    • setCharAt(索引,字符) 替换指定索引出的字符
    • replace(start,end,字符串) 替换索引为start(包含)到end()不包含之间的内容,替换为指定的字符串
    • deleteCharAt(索引) 删除缓冲区中字符串的指定索引出的字符
    • delete(start,end) 从索引start开始删除 到 索引为end为止

Math类:

  1. 概念:
    含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数.

  2. Math类特点:
    1.Math类作用一个公共的工具类,将构造函数私有化,同时将所有属性和方法设置为静态.
    使用时,无能/不需要创建对象,可以直接使用Math.属性 Math.方法名()

  3. 常用属性和方法:

    • E: 获得自然底数e
    • PI: 获得圆周率
    • abs(): 求绝对值
    • pow(): 求次方
    • sqrt(): 开平方
    • cbrt(): 开立方
    • ceil(): 大于当前小数的最小Double值
    • floor():小于当前小数的最大Double值
    • min():获得两个数的最小值
    • max():获得两个数的最大值
    • round():四舍五入
    • random():获得随机值

Random类:

  1. 概念:
    Random类主要用于生成各种类型的随机数
  2. 常用方法:
    • nextInt():获得一个int类型的随机数
    • nextFloat():获得一个float类型的随机数
    • nextDouble():获得一个double类型的随机数
    • nextBoolean():获得一个boolean类型的随机数
    • nextInt(参数):获得一个指定范围[0-参数之间]的随机数

TimeZone类:

  1. 概念:
    时区:为了克服时间上的混乱,规定将全球划分为24个时区,使地球上的区域使用同一个时间定义.
    Java系统中使用TimeZone表示时区对象,TimeZone是抽象类无法直接创建对象.
    Java程序需要在电脑上运行,电脑会因为所在位置不同,采用不同的时区.为了克服/避开时区对程序时间的影响,通常在操作时间或日期时需要设置下程序的时区.

  2. 常用方法:

    • TimeZone.getDefault():获得当前主机默认环境下的时区对象
    • TimeZone.getAvailableIDs():获得所有受支持的时区的ID的集合
    • TimeZone.getTimeZone(ID):获得时区ID对应的时区对象
    • 时区对象.getID():获得时区对象的ID
    • 时区对象.getDisplayName():获得时区对象的时区名

Date类:

  1. 概念:
    java系统将Date类作为日期对象,可以操作Date类 获得/设置时间和日期

  2. Date类特点:
    1.new Date(); //自动将当前系统时间和日期 作为Date对象的初始值
    2.Date类中对于操作具体时间的方法都已经过时,被Calendar替代.

  3. 日期格式化类:

    • DateFormat[抽象类,不能直接创建对象]
    • SimpleDateFormat[属于DateFormat的子类]
  4. 日期格式化:
    y: 表示年
    M: 表示月
    d: 表示日
    E: 表示星期数
    k: 表示小时
    m: 表示分钟
    s: 表示秒数

  5. 格式化原理:
    java系统将特定的字母替换为 具体的时间值.
    代码:

SimpleDateFormat对象.format(Date对象):将Date对象表示日期 格式化为指定格式的时间,并以String方式返回
SimpleDateFormat对象.parse(String对象):将String对象表示内容 按照指定格式 转为 Date对象.

Calendar类:

  1. 概念:
    TimeZone表示时区,用控制日期/时间位置
    Date表示日期和时间,多数方法都已过时,被Calendar替代.
    Calendar表示日历,含有具体时间的操作方法.

  2. Calendar类特点:
    1.Calendar是抽象类,不能直接创建对象
    2.通过getInstance()或 new GregorianCalendar()模拟Calendar对象

  3. 常用属性: 以下属性都用于set()和get()的参数,表示时间类型
    YEAR: 年
    MONTH: 月
    DAY_OF_MONTH: 日
    HOUR_OF_DAY: 时
    MINUTE: 分
    SECOND: 秒
    WEEK_OF_YEAR: 一年的第几周
    WEEK_OF_MONTH: 一月的第几周
    DAY_OF_YEAR: 一年的第几天

  4. 常用方法:
    get(时间类型): 获得指定时间类型的值[获得年份/月/日等等]
    set(时间类型,数值):设置指定时间类型的值
    add(时间类型,数值):修改指定时间类型的值

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,153评论 1 44
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,365评论 0 4
  • 我视你如宝,你待我如摇曳在风中的草
    飞海落英阅读 166评论 0 0
  • 阿德勒心理学主张:“并不是因为过去而不能前进,而是因为不能前进才会为过去烦恼。”这也就解释了我们在遇到问题时会拿过...
    教育小硕阅读 198评论 0 0