zoukankan      html  css  js  c++  java
  • Java基础总结--常用类以及包的访问权限

    -----Object---所有类的根类
    1.怎么得到的:通过对所有对象不断的向上抽取共性,具备所有对象的共性的东西
    2.常用的方法
    * equals(Object obj):比较两个对象的引用是否指向同一个对象,本质就是引用地址是否相同,相同就返回true;作用和"=="一致,其子类继承后,只判断地址没有意义,一般会对该方法进行重写,重写后比较的是对象的特有内容是否相同。也用到了多态,为了代码的扩展性。eg字符串equals比较的就是内容。
    注意一个细节:重写后存在多态,若要访问子类特有数据,必须进行强制转型
    * hashCode():根据哈希值-->哈希算法-->内存中的地址
    如果子类没有对其进行重写,其实现是与系统相关的,当然也可以利用对象的特有数据重写该方法重新定义哈希值。
    一般对象相同表示两个方面:对象的地址和对象的内容,一般对equals()重写的时候也会对hashCode()进行重写
    *getClass():要创建一个对象,必须先有这个对象的所属类的class文件,不同的对象存在不同的所属字节码文件--将这些字节码文件进行抽取共性(名字,构造方法等),封装成Class类
    一般将类文件加载进内存的时候,会自动的将其封装为Class类型的对象(只会加载一次),然后在根据其创建该类所属的对象。
    getClass()实际上返回的是当前对象所属类的字节码文件对象

    -----String------常用的对象的方法必须掌握
    1.是一个特殊的对象,两种创建对象方式
    2.字符串一旦初始化就不可以被改变--不可变对象
    String str = "abc"; s = "bcd";表示创建两个对象,s先指向abc实体,再指向bcd实体
    注意:直接赋值字符串(存储在字符串常量池,一旦以该方式创建字符串内容相同就指向同一个对象)
    3.String str = "abc";与Sting str1 = new String("abc");区别
    前者存储在字符串常量池,可以被共享,后者存储在堆中new一次产生一个新的对象(涉及两个对象本质上)
    str.equals(str1);true--被字符串类重写Object类equals方法--依据是字符串内容
    4.常见的操作方法
    构造方法:
    以空参数,字符串,字节数组,字符数组,StringBuffer引用为参数--转化为字符串
    以及将数组中部分组成字符串 offset length 开始+长度
    一般方法分类:
    1.获取字符串的信息
    长度length--看返回值类型 s.length()--int;
    获取特定位置的字符charAt(int index)--char 并支持ASCII范围的int类型数字
    根据字符/字符串获取位置indexOf(char c)--int 第一次位置(重点掌握)
    索引字符以及字符串 lastIndexOf(char c)
    获取子串substring()--String
    2.字符串的转换
    分割字符串--返回字符串数组(按照什么分隔字符串)split(String str)--涉及到正则表达式
    (这个方法必须掌握)
    字符串--转化为字符数组toCharArray()--char[] ch
    字符串--转化为字节数组s.getBytes()
    字符串中字符大小写转化toUpperCase()/toLowerCase()等
    替代字符串中的字符/字符串 replace(char oldChar,char newChar);
    去掉字符串里面空格 trim()输入用户信息
    字符串连接 concat()与+区别:前者专业
    3.判断
    字符串判断 equals() equalsIgnoreCase()
    判断字符串是否包含指定字符串 contains()
    是否以指定字符串开始/结束 startsWith/endsWith--快速查找
    4.比较(必须会)
    比较字符串大小 compareTo()--int(按照从前到后比较)this.compareTo(String str)
    5.字符串intern()方法--返回字符串对象的规范化表现形式
    可以对字符串池进行操作;返回池中存在的对象

    ----StringBuffer(保证同步,线程安全)-----字符串缓冲区对象(重点)--看作一个容器
    1.缓冲区就是一个容器--将数据进行临时存储
    2.特点:长度可变;可以存储不同类型的数据;默认容量为16B
    缓冲区本质还是数组,将数组封装,对外提供方法。
    要使用缓冲区的数据必须将其转化为字符串才能够使用。
    可以对字符串进行修改--
    3.应该具备的功能
    添加:append()--返回值为StringBuffer对象(将数据放进去容器,返回值就是该容器)-后边追加数据 insert()-可以实现在任意位置的插入
    删除:容器相关的方法delete()--/remove()--
    查找:类似与字符串的查找方法
    修改:replace()替换 setCharAt()
    增删改查--容器的基本功能
    注意:假如超过缓冲区的长度的处理:数组长度固定
    ******关于可变数组长度的原理*******
    创建新数组长度=2倍原数组长度,在把原数组中的元素赋值过去
    缓冲区存在构造方法可以指定缓冲区的大小
    关于容器大小的估计--可以估计-就指定为估计的数组长度
    ---StringBuffer怎么实现同步----
    对于操作数据的方法进行同步处理--涉及到处理数据的方法设置为同步方法/使用同步代码块实现同步(这种方式比较常见)--但是假如不涉及多线程-则就是执行的非常慢

    ---StringBuilder(不保证同步)----与StringBuffer兼容的API
    1.由于不同步,所以执行速度较快--用于单线程比较好
    2.多线程使用--StringBuilder 单线程使用StringBuffer
    3.jdk升级的原因:简化书写(通常具有局限性)-提高效率-增加安全性(书写的麻烦)
    4.数据要多-存储起来-要是以整个字符串形式输出就使用StringBuilder/StringBuffer
    5.数组通常就可以一个一个的操作元素

    ---基本数据类型包装类---
    为了更好的操作基本数据类型值,把其包装成对象形参基本数据包装类
    Integer Short Boolean Byte Long Character Float Double--final类
    构造方法:value,String--转换为数字对象
    里面定义了该类型表示范围的常量:MAX_VALUE MIN_VALUE
    常见的方法
    数字格式字符串--基本数值转换(最常用)parseInt(String s) -int(静态方法)
    可能会抛出NumberFormatException运行时异常(方法声明异常是希望调用者处理)
    Character-里面没有该方法(因为可以把它直接和数字操作)
    intValue()--int将Integer对象转换为int(非静态)
    valueOf(String s)-Integer
    进制转换---十进制转化二进制、八进制、十六进制(其他进制转十进制)--静态方法
    parseInt(String s, int radix)--int十进制
    自动装箱和自动拆箱(JDK1.5以后开始)
    自动装箱:将基本数据类型赋值给引用
    自动拆箱:将包装类对象和基本数据类型做运算

    ---System类---方法是静态的
    1.字段(静态成员变量-引用)
    static PrintStream err--标准错误输出流
    static InputStream in--标准输入流-标准输入设备键盘
    static PrintStream out--标准输出流-标准输出设备显示器
    2.常用方法
    long currentTimeMillis() 表示从1970 1.1.00.00.00到现在的毫秒数
    Properties getProperties()
    获取当前系统的属性存储在Properties<Map 键值对>集合里面
    该集合Properties键值对都是字符串类型-最好使用其自己的方法获取元素
    stringPropertyNames()-Set<String>,再使用高级for遍历集合并得到所有元素

    ---RunTime类---无构造方法getRunTime()返回本类对象-单例模式
    每个Java程序都会有一个RunTime实例,使得可以与运行环境连接
    注意:主要的目的是了解单例设计模式在该类的使用

    ---Math类---提供数学方面的应用(静态方法)
    三角函数,指数函数,绝对值,平方根
    取整函数
    ceil():返回大于参数的最小整数
    floor():返回小于参数的最大整数
    round():返回四舍五入的整数
    随机数:random()-double[0.0,1.0)

    --Date类---util包里面
    1.构造方法 Date() Date(long date) 毫秒数
    年份-1900,月份0-11,小时0-23,分钟0-59
    2.常用方法
    直接打印date对象-打印结果就是日期+时间
    毫秒值--日期对象
    * 通过Date的构造方法
    * 通过调用setTime(time)
    将日期对象--毫秒值
    * 通过调用getTime()[也可以调用getDay等方法获得该日期的各个字段值]
    对日期格式进行转换--日期对象与字符串之间的转换(DateFormat抽象类)
    日期对象+日期格式器对象
    Date-String format(data)
    关于自定义日期格式如何操作:SimpleDateFormat(DateFormat的子类)
    该类中有定义一定的格式,我们直接可以使用其定义的符号表示自定义格式
    String-Date
    Date parse(String source)--DateFormat里面的方法

    ---Calendar抽象类---
    主要作用:定义的一些方法用来取代Date里面过时的方法

    ----访问权限-----
    1.包的好处
    对类文件进行分类
    给类文件提供多层的命名空间
    写在程序的第一行
    类名变为:包名.类名
    包也是一中扩展的形式
    2.四种访问权限的访问范围
    范围 public protected default private
    同包同一类中 ok ok ok ok
    同一包中不同类 ok ok ok
    不同包中父子 ok ok
    不同包中 ok

  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/sun1993/p/7588680.html
Copyright © 2011-2022 走看看