review

1. 三元运算符 

关系表达式?表达式1:表达式2
* 执行流程:
 *         A:计算关系表达式的值,看是true还是false
 *         B:如果是true,表达式1就是结果
 *        如果是false,表达式2就是结果
(a>b)?a:b

https://www.cnblogs.com/longesang/p/10763057.html

2.方法

* 写一个方法有两个明确
* A:返回值类型 明确功能结果的数据类型
* B:参数列表 明确参数个数,以及参数的数据类型

• 格式:
– 修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型
参数名2…) {
函数体;
return 返回值;
}

3.方法重载

方法重载概述
– 在同一个类中, 允许存在一个以上的同名方法, 只要它们
的参数个数或者参数类型不同即可。
• 方法重载特点
– 与返回值类型无关, 只看方法名和参数列表
– 在调用时, 虚拟机通过参数列表的不同来区分同名方法

 https://www.cnblogs.com/longesang/p/10918513.html

4.堆栈、基本数据类型、引用数据类型、形参、实参

https://www.cnblogs.com/longesang/p/10919095.html

堆区:  一般由程序员分配释放,由 malloc 系列函数或 new 操作符分配的内存,其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束,由OS释放。其特点是使用灵活,空间比较大,但容易出错

栈区: 由编译器自动分配释放,保存局部变量,栈上的内容只在函数(方法)的范围内存在,当函数运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限

 成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
 成员变量:有默认值
局部变量:没有默认值。必须先定义,赋值,最后使用

5.构造方法、this使用

1)分为 :无参构造 、有参构造

 * 构造方法:
* 给对象的数据进行初始化
*
* 格式:
* 方法名和类名相同
* 没有返回值类型,连void都不能写
* 没有具体的返回值
 * 成员变量赋值:
* A:setXxx()方法
* B:带参构造方法

2)this关键字的使用
如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近的原则
我们有没有办法把局部变量的name赋值给成员变量的name呢? this可用解决
this:代表所在类的对象引用。方法被哪个对象调用,this就代表那个对象
* 使用场景:
局部变量隐藏成员变量

https://www.cnblogs.com/longesang/p/10997518.html

6.String

https://www.cnblogs.com/longesang/p/11002494.html

 * String:字符串类
* 由多个字符组成的一串数据
* 字符串其本质是一个字符数组
*
* 构造方法:
* String(String original):把字符串数据封装成字符串对象
* String(char[] value):把字符数组的数据封装成字符串对象
* String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象

https://www.cnblogs.com/longesang/p/11002494.html

String的用法

  boolean equals(Object obj):比较字符串的内容是否相同

  boolean startsWith(String str):判断字符串对象是否以指定的str开头

  * char[] toCharArray():把字符串转换为字符数组

  * 按照指定符号分割字符串
  * String[] split(String str)

  * String类的获取功能:
  * int length():获取字符串的长度,其实也就是字符个数
  * char charAt(int index):获取指定索引处的字符
  * int indexOf(String str):获取str在字符串对象中第一次出现的索引
  * String substring(int start):从start开始截取字符串
  * String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end

7.StringBuilder

* String和StringBuilder的区别:
* String的内容是固定的。(方法区的内容)
* StringBuilder的内容是可变的

* 添加功能
  * public StringBuilder append(任意类型):添加数据,并返回自身对象
* 反转功能
  * public StringBuilder reverse()
StringBuilder和String的相互转换
  * StringBuilder -- String
  * public String toString():通过toString()就可以实现把StringBuilder转成String
  *
  * String -- StringBuilder
  * StringBuilder(String str):通过构造方法就可以实现把String转成StringBuilder
//StringBuilder -- String
StringBuilder sb = new StringBuilder();
sb.append(11).append("aa");
String sss = sb.toString();
System.out.println(sss);

//String -- StringBuilder
String s1 = "abcd1234";
StringBuilder sb1 = new StringBuilder(s1);
System.out.println(sb1.append(888));


8. 集合 Arraylist (集合体系 :Collection

https://www.cnblogs.com/longesang/p/11021722.html

array 和ArrayList的区别?

  array 数组的长度是固定的,适应不了变化的需求。

  ArrayList集合的长度可变、大小可变。

* ArrayList<E>:
* 大小可变数组的实现
*
* <E>:是一种特殊的数据类型,泛型。
* 怎么用呢?
* 在出现E的地方我们使用引用数据类型替换即可
* 举例:ArrayList<String>,ArrayList<Student>
*
* 构造方法:
* ArrayList()
 ArrayList<String> array = new ArrayList<String>();


9.static 静态

* static特点:
* 被所有的对象所共享
* 可以直接使用类名来调用
* 静态所修饰的成员加载优先于对象,随着类的加载而加载

 非静态方法:
可以调用静态的成员变量

静态方法:

只能调用静态方法和变量,不能调用非静态的~

 9.2代码块

  代码块的执行顺序:(有参和无参没有顺序,按调用顺序。)

  main:局部--有参(静态代码块--代码块--有参)--无参(静态代码块只执行一次--代码块--无参)

构造方法和构造代码块只有在创建对象时会用
https://i.cnblogs.com/EditPosts.aspx?postid=11190573

10.abstract 抽象类(@overwrite注解 , 方法重写

抽象方法:没有具体方法体

抽象类:有抽象方法的类必须是抽象类

  * 抽象类不能创建对象(不能实例化)
  * 抽象类中可以有非抽象的方法

一个类继承了抽象类:要么重写所有的抽象方法,要么他自己是抽象类

11. interface 接口

接口,弥补了单一继承的局限性。

接口里所有的方法全是抽象方法

类与接口:实现关系,多实现。

接口与接口的关系:继承关系,多继承

12.final 关键字(https://www.cnblogs.com/longesang/p/11234616.html

* final: 修饰符,可以用于修饰类、成员方法和成员变量
* final所修饰的类:不能被继承,不能有子类
* final所修饰的方法:不能被重写
* final所修饰的变量:是不可以修改的,是常量

13.多态(https://www.cnblogs.com/longesang/p/11234787.html

* 多态的前提:
  * 子父类的继承关系
  * 方法的重写
  * 父类引用指向子类对象

 * 多态的成员特点:
  * 成员变量 编译时看的是左边,运行时看的左边
  * 成员方法 编译时看的是左边,运行时看右边
  * 静态方法 编译时看的是左边,运行时看的也是左边

  * 编译时看的都是左边,运行时成员方法看的是右边,其他(成员变量和静态的方法)看的都是左边

总结:多态,子类只有重写父类的方法才可以为子类所用。
   如果要用子类自己的方法,必须要向下转型(强制类型转换)https://www.cnblogs.com/longesang/p/11234840.html
优缺点:
   提高代码可扩展性
   无法直接访问子类特有的成员(可以使用向下转型方式获取)



14.内部类 https://www.cnblogs.com/longesang/p/11243344.html
  成员内部类:在类的成员位置,和成员变量以及成员方法所在的位置是一样的.static修饰成员内部类,不用再创建外部类的对象了可以直接使用。
  局部内部类:在方法内,出了方法之后就无法使用(参考代码块特点)
  匿名内部类:没有名字的局部内部类
  

 15.包装类

以int --- Integer为例

String 类型转为 int: int a = Integer.parseInt("5"); //parseInt方法,参数:字符串

int 转为 String :String s = 5 + ""; //int 加 空字符串

16. Iterator:迭代器

迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,则抛出异常(Exception in thread "main" java.util.ConcurrentModificationException:并发修改异常)

17. foreach:增强for循环

foreach 一般用来变量集合或数组

foreach使用的迭代器实现,所以不能在遍历变量时更改

17.2

foreach 一般用来遍历集合或数组

想使用 foreach 语句就必须实现 Iterable接口

collection的父接口就是Iterable,所以集合和数组可以使用foreach来遍历

18.List的常用子类:

ArrayList
      底层是数组结构,查询快,增删慢
LinkedList 底层结构是链表,查询慢,增删快

19.SetList 的区别

* Set的特点
  * 无序(存储和读取的顺序可能不一样)
  * 不允许重复
  * 没有整数索引

List正好相反

List的特点

有序、可以重复、可以使用索引
List数据重复,写出去重的方法(https://www.cnblogs.com/longesang/p/11270666.html

Set的子类:

  HashSet

20.Map 键值对集合

* Map和Collection有什么区别
* Map:是一个双列集合,常用语处理有对应关系的数据,key是不可以重复的,我们也称之为是夫妻对集合
* Collection:是单列集合,Collection有不同的子体系,有的允许重复有索引有序,有的不允许重复而且无序,那么我们也称之为单身汉集合

 遍历map

Map<String,String> map = new HashMap<String,String>();
map.put("100","bb");
map.put("200","bb");
map.put("300","cc");
System.out.println(map);

//获取键值映射关系
Set<Map.Entry<String,String>> entries = map.entrySet();
System.out.println(entries);

for (Map.Entry<String,String> entry:entries
) {
System.out.println(entry);
}

21.exception异常

22.

23.





原文地址:https://www.cnblogs.com/longesang/p/11357273.html