java8新特性

macos环境安装配置

  • jdk8

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  • eclipse ide

https://www.eclipse.org/downloads/

lambda概述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args){
    new Action(){
        @override
        public void execute(){
            System.out.println(content);
        }
    }.execute('aaaaaa');
    Action login = (String content) -> {
        System.out.println(content);
    };
    login.execute('bbbbbb');
}

static interface Action{
    void execute(String content);
}

##

static关键字

静态变量有JVM自动初始化,全局的。 静态方法不能调用非静态的函数或变量。

1
2
3
4
5
6
7
8
9
10
11
static String name;
static char sex;
static short age;
static float height;
static String type;
public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    System.out.println("姓名: ");
    name = sacnner.next();
    ...
}

定义无参方法

1
2
3
static void 方法名(){
    方法体 - 具体代码实现
}

定义带参方法

1
2
3
static void 方法名(类型1 变量1,类型2 变量2,...){
    方法体 - 具体代码实现
}

定义带返回值的方法

1
2
3
4
static 返回值类型 方法名(类型1 变量1,类型2 变量2,...){
    方法体 - 具体代码实现
    return 返回的数据;
}

封装性

  • private 私有
  • get set 控制访问

匿名对象

1
2
3
4
5
6
7
class Student{
    public void tell(){
        System.out.println("aaa");
    }
}

new Student().tell();

构造对象

1
2
3
4
5
6
7
class People{
    public People(){
        System.out.println("aaa");
    }
}

People per = new People();

final 关键字

  • 表示最终
  • 不能被继承
1
2
final String NAME = "aaa";
NAME = "bbb";//编译失败不能被改写

被定义 final 的变量,必须用大写标识

abstract 抽象类

  • 声明而未被实现的方法
  • 子类必须实现
1
2
3
4
5
6
7
8
abstract class Aaa{
    public abstract void add();
}
class Bbb extends Aaa{
    public void add(){

    }
}

interface 接口

  • 一种特殊的类,里面全部是常量和公共的抽象方法
  • 一个类可以同时继承抽象类和实现接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface InterA{
    public static final int AGE = 1;
    public abstract void add();
}
interface InterB{
    public abstract void say();
}
class Aaa implements InterA,InterB{
    public void add(){

    }
    public void say(){

    }
}

extends 继承

  • 语法
1
2
3
4
5
6
class Aaa{
    ...
}
class Bbb extends Aaa{
    ...
}
  • 限制 只允许单继承

  • 限制 子类不能访问父类的私有成员

  • 子类,先调用父类构造,再去调用子类构造

super 关键字

强行调用父类方法

1
2
3
4
5
6
7
8
9
class A{
    public void tell(){
    }
}
class B extends A{
    public void tell(){
        super.tell();
    }

访问权限

private < default < public

子类重写父类方法,不能比父类方法权限严格

多态性

  • 向上转型 只能用父类方法
  • 向下转型 能用子类方法

instanceof

bool 返回值 判断是否当前类或子类

Collections 集合

  • List、ArrayList(异步,非线程安全)、Vector(同步,线程安全)

  • Set、HashSet、TreeSet

  • Iterator

1
2
3
4
Iterator<String> iter = lists.iterator();
while(iter.hasNext()){
    ...
}
  • Map、HashMap、Hashtable 无需存放,key不允许重复

Generic 泛型

1
2
3
4
5
6
7
8
9
10
11
12
class Point<T,V> {
	private T x;
    private V y;

	public T getX() {
		return this.x;
	}

    public V getY() {
        return this.y;
    }
}
  • 未知对象类型时,可以用 ? 通配符。

  • 泛型方法

1
2
3
4
5
6
7
8
class Gener{
    public <T> tell(T t){
        return t;
    }
}

Gener g = new Gener();
g.tell("aaa");
  • 泛型数组
1
2
3
public static <T> void tell(T arr[]){
    ...
}

变量与数据类型

  • 基础8种类型

byte short int long float double char boolen

变量的命名、定义和初始化

  • 首字母小写
  • 驼峰方式 myImages
  • 定义 类型 变量1, 变量2, …;

变量的作用域

1
2
3
4
5
6
7
{
    String name = "aaa";
}
String name = "bbb";

代码块、局部变量、全局变量

基本数据类型的包装类

  • 首字母大写的 包装类 Byte Short Interger Long Float Double Character Bollean

  • 包装常用方法

二进制补码

  • 补码计算 (1101) 0010 取反 0011 加1 补码 -3

我的博客