A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ckhang 初级黑马   /  2018-8-3 10:21  /  1111 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

小要点积累
1.        数据类型的取值范围的大小
从小到大:Byte 、char、short——>int——>long——>float——>doublie
从小到大:自动类型转换
从大到小:强制类型转换(易精度损失和内容溢出)

2.        数组的最大弊端在于限定长度,最重要的方法有两个:
system.arraycopy(原始数组,起始位置,对象数组,起始位置,所需长度);
array.sort(对象数组);

3.        “==”比较:基本类型中比较的是数值、引用类型中比较的是内存地址
“.equals”专门负责比较 字符串内容

4.        String的几种必须记下来的方法
字符与字符串:
Public String(char[] value) 字符数组转换成String类对象
Public String (char[] value,int offset,int count)  将部分字符数组转换成String
Public char charAt(int index)  返回指定索引对应的字符信息
Public char[] toCharArray()  将字符串以字符数组的形式返回

字节与字符串:
Public String(byte[] bytes)  将全部字节数组变成字符串
Public String(byte[]  bytes, int offset, int length)将部分字节数组变成字符串
Public byte[] getBytes()   将字符串变成字节数组
Public byte[] getBytes(String charsetName) throws UnsupporteEncodingException
                                                             进行编码转换

字符串比较
Public boolean equals(String anObject)     进行相等判断(区分大小写)
Public boolean equalsIgnoreCase(String anOtherString)   进行相等判断(不分大小写)
Public int compareTo(String anotherString)    从编码上判断两个字符串的大小

字符串查找
Public boolean contains(String s)    判断指定内容是否存在(包含)
Public int indexOf(String str)    从前到后查找特定字符串的位置,返回第一个字母索引,找不到返回-1
Public int indexOf(String str ,int fromIndex)   上一个方法加个起始位置
Public int lastIndexOf(String s)    从后到前查找特定字符串的位置,返回第一个字母索引,找不到返回-1
Public int lastIndexOf(String s, int fromIndex)   上一个方法加个起始位置
Public boolean starsWith(String prefix)   判断是否以指定字符串开头
Public boolean starsWith(String prefix, int offset)   上一个方法加个开始判断的指定位置  
Public boolean endsWith(String suffix)    判断是否以指定字符串结尾

字符串转换
Public String replaceAll(String regex, String replacement)  内容替换
Public String replaceFirst(String regex,  String replacement)  替换首个

字符串截取
Public String substring (int beginIndex)     从指定索引开始截取全部
Public String substring(int beginIndex, int endIndex)   截取部分

字符串拆分
Public String[] split(String regex)                       按照指定字符串进行全部拆分
Public String[] split(String regex, int limit)          limit决定数组长度
*拆分时候如遇上特殊字符无法拆分,是需要转义字符的问题。

其他操作
Public String toLowerCase()    转小写
Public String toUpperCase()    转大写
Public String trim()   去除两边的空格
Public int length()     长度
Public boolean  isEmpty()   判空

5.        StringBuffer() 字符串缓冲类,即长度可变的String类
(适合用来编写Sql语句,便于后期修改)
创建API:                 StringBuffer("jack")            在创建对象的时候赋值
增API:                    append()                          在缓冲区的尾部添加新的文本对象
insert(int star,String str)      指定索引添加新的文本对象
删API:                   delete(int star, int end)
改API:                      replace(int start, int end,String str)         
setCharAt(int index ,char ch)  指定索引位置替换一个字符
查API:                        toString()                         返回这个容器的字符串
indexOf(String str)                 返回第一次出现的的索引
substring(int start)                 从开始的位置开始截取字符串
反序API:                reverse()
面试题目:使用StringBuffer无参构造函数创建一个对象时,默认的初始容量是多少?如果长度不够用,自动增长多少倍?
StringBuffer底层依赖了一个字符数组才能存储字符数据,该字符串数组默认的初始容量是16,如果字符数组的长度不够用,自动增长一倍。

6.        有重复的代码必须要想办法消除,除非有其他作用。
7.        如果一个方法返回的内容为Boolean值,习惯性命名方法为“isXxx”
8.        类中使用this()调用构造方法形式的代码只能放在构造方法的首行,且类中起码要有一个不使用this()调用构造方法的构造方法存在,否则递归死循环。
9.        Static  描述一个类中的公共属性,存储在全局数据区,可以直接  类+属性 访问。
非static描述的对象属性必须在对象实例化之后才可以访问,但是用static描述对象属性可以在对象实例化之前用类+属性名访问到。
*实际应用:
1.统计实现类实例化对象的个数(“这是第X个对象”这种,因为static修饰的属性的存储在全局数据区,可保留数据)
2.实现属性的自动设置(比如有一千万个对象中的某个属性是相同的,后期需要集体更改的)
* 尽量不要使用static这个修饰词

10.        构造代码块:写在一个类里面的代码块(构造块优先于类的构造方法执行,反复)
静态代码块:1.在非主类中定义,将优先于构造块和构造方法,只执行一次。
                   2.在主类中,将优先于主方法执行,一次。
*尽量不要使用代码块
10.   内部类的优势,方便内部类和外部类之间无视private直接访问私有属性
实例化:外部类.内部类 对象名 = new 外部类().new 内部类();
      内部类用private声明后无法在外部实例化内部类对象
      内部类用static定义后就相当于一个外部类(static定义的类,方法,属性,对象都不受该所在类的限制)

11.  extends继承中,严格意义上子类继承父类所有操作,值得注意的是 对于所有的私有操作属于隐式继承,所有的非私有操作属于显式继承。子类中的super()方法主要用于调用父类构造方法,放在子类构造方法的第一行。
*关于super.方法()和this.方法()的区别
使用    this.方法()  会首先查找本类中是否存在要调用的方法名称,如果有就直接调用,如果没有则查找父类中是否存在要调用的方法名称,有就调用,没有就异常。
使用    super.方法()  是在明确的表示调用的不是子类方法,直接调用父类中的指定方法。
*涉及继承的操作,一定要多用this.  和  super.

12.  抽象类,描述不具体的行为。
1.  类和方法都要用abstract描述,方法中不带方法体。
2.  强制子类必须实现抽象类的所有方法。
3.  抽象类无法创建对象,抽象类中的构造函数提供给子类实例化对象。
* 一般也是不使用
   
13.   多态 ---------->父类  父类对象 = new 子类();
1.父类和子类具有相同的成员变量,多态下访问的是父类的成员变量
2.当父类和子类具有相同的静态方法,多态下访问父类的成员方法
3.当父类和子类具有相同的非静态方法,多态下访问的是子类的非静态方法
4.无法使用子类特有的方法,因为编译看左边,运行不一定看右边


14.  如果一个子类既需要继承又需要接口时,严格依照先继承后实现的原则。
15.   匿名内部类要好好了解一下
16.  数据类型转换   
       Integer.parserInt(String s )
       Double.parseDouble(String s )
       Boolean.parserBoolean(String s )
*Boolean.par….中如果转换的字符串不是“true”,则统一返回false
       基本数据类型——>字符串类型
1.        直接+“ ”
2.        Public static String valueOf(数据类型  变量);

17.   关于权限的选择,声明属性用private,声明方法用public
18.    单例设计模式,有效确保  不管外部产生多少个某类的对象,本质上永远只有唯一的一个实例化对象,随时准备好一个实例化对象的为饿汉式,需要的时候再方法内部判断生成的为懒汉式。(源于对属性和构造方法中,private和static的巧妙配合使用)
19.  异常处理:
1. 编写多个catch捕获异常的时候,捕获范围应该按照从小到大的原则,否则编译错误。
2. 初期就把所有的异常都用exception处理,后期要学会特定异常特定处理。
3.  runtimeException,特征在于程序在编译的时候不会强制性要求用户处理异常,用户可以根据自己的需要选择性的进行处理,但是如果没有处理又发生了异常,就交给JVM默认处理。
* 一定要学会自定义异常类去捕获和处理异常

20.  泛型解决通用问题,增加程序灵活性
1. 泛型只在编译时期有效,编译后的字节码文件中不存在有泛型信息,这个概念叫泛型擦除,作用在方法重载中。
2.泛型的类型必须是引用类型(比如Integer),不能是基本类型(比如Int)
3.在方法中使用泛型只要在方法中定义泛型就OK,当然也可以在类上定义变成泛型类。
4.关键字
?                       List<?>  list = new ArrayList<String>();
能接收任何泛型集合,但是不能编辑集合内容。(一般用于值的获取和迭代)
Extends             List<? extends Number>  list  
用共同的父类限定传入数据的类型,设定泛型的上限(较为常用)
Super                List<? Super String> list
                   只能传入String或者String类型的父类,设定泛型的下限(比较少用)


21.  方法引用











*常用快捷键
1.        Ctrl + W                      选择当前代码块,可多次触发
2.        Ctrl + Shift + W          反向选择代码块
3.        Ctrl + Alt + L               格式化
4.        Ctrl + Alt + O              去除没有使用到的包
5.        Ctrl + Shift + V            从之前的复制或剪切记录中查找要粘贴的内容
6.        Ctrl + D                        向下复制当前代码
7.        Ctrl + Y                        删除光标所在代码行
8.        Ctrl + Shift + -    折叠内容
9.        Ctrl + Shift + +   展开内容
10.        Ctrl + F                          在当前标签页进行查找
11.        Ctrl + R                          在当前标签页进行替换+
12.        Ctrl + N                         类查询
13.        Ctrl + Shift + N             文件查询
14.         Ctrl + Alt + 右箭头/左箭头              在曾经浏览过的代码行中来回跳

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马