亮剑Java(1/3)

序号内容备注
1.Java入门(Java简介、dos常用命令、jdk环境安装配置、Java入门程序等)
2.编程基础(变量、常量、数据类型、方法等)
3.流程控制(if if…else,switch、while、do…while、for、数组等)
4.面向对象(思想、类与对象、构造方法与重写、封装\继承\多态、抽象类、接口等)
5.常用类(Object、StringBuffer、Math、Date等)
6.异常处理(异常捕获与异常的基本结构、try catch finally、throws和throw、自定义异常等)
7.集合框架(概念、ArrayList、LinkedList、Set、Map、泛型等)
8.Java IO流(文件、输入输出流、字节流、字节缓冲流)
9.Java多线程(概念与作用,创建多线程的2种方法、多线程的生命周期、线程同步、线程池)
10.Java反射机制(概念、对Class对象的使用)
11.XML(XML基础语法、约束、解析器,数据存储到XML)

3.流程控制、数组等
1、For-Each 循环
for(type element: array){ System.out.println(element);}
2、声明创建数组
dataType[] arrayRefVar = new dataType[arraySize];
3、java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。fill,sort,equals,binarySearch
4.面向对象
1.对象:对象是类的一个实例,有状态(属性)和行为(方法体现);类是一个模板,它描述一类对象的行为和状态。方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1、局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
2、成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化【实例变量,对象特有】。成员变量可以被类中方法、构造方法和特定类的语句块访问。
3、类变量(静态变量):类变量也声明在类中,方法体之外,但必须声明为static类型。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
类的构造方法
1、构造方法的名字和类名相同,并且没有返回值。
2、构造方法主要用于为类的对象定义初始化状态。
3、不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例。
4、Java的类都要求有构造方法,如果没有定义构造方法,Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1、访问修饰符
public 意味着任何地方的其他类都能访问。
default 则是同一个包的类可以访问。
protected 表示同一个包的类可以访问,其他的包的该类的子类也可以访问。
private 表示只有自己类能访问。
2、非访问修饰符
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
方法重载:一个类中的多个方法拥有相同的名字,但是每个方法都有不同的参数列表。
构造方法:当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
protected void finalize()
{
// 在这里终结代码
}//关键字 protected 是一个限定符,它确保 finalize() 方法不会被该类以外的代码调用。
重写(override):是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。
(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
抽象类抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
文件名 : Employee.java
public abstract class Employee
{
private String name;
private String address;
private int number;
public abstract double computePay();方法名后面直接跟一个分号,而不是花括号。
//其余代码
}
如果Salary类继承了Employee类,那么它必须实现computePay()方法:
文件名 : Salary.java
public class Salary extends Employee
{
private double salary; // Annual salary
public double computePay()
{
System.out.println("Computing salary pay for " + getName());
return salary/52;
}
//其余代码
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1、继承 : A extends B
一个子类只能继承一个父类非 private 的属性和方法。
2、多继承接口的情况: C implements A,B
3、this关键字:指向自己的引用。
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
final 关键字:声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写。
4、向上向下转型:父类引用指向子类对象
Father f1 = new Son(); // 这就叫 upcasting (向上转型)
// 现在 f1 引用指向一个Son对象
Son s1 = (Son)f1; // 这就叫 downcasting (向下转型)
// 现在f1 还是指向 Son对象
Father f2 = new Father();
Son s2 = (Son)f2; // 出错,子类引用不能指向父类对象
5.常用类
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
基本原则:
如果要操作少量的数据用 String ;
单线程操作大量数据用
StringBuilder

多线程操作大量数据,用StringBuffer
String:字符串常量,字符串长度不可变。Java中String 是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。
StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。
StringBuilder :字符串变量(非线程安全)。在内部 StringBuilder 对象被当作是一个包含字符序列的变长数组。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
封装的步骤

  1. 修改属性的可见性来限制对属性的访问(一般限制为private)
    public class Person {
    private String name;
    private int age;
    }

  2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问。通常情况下,这些方法被称为getter和setter方法。因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法
    public class Person{
    private String name;
    private int age;

    public int getAge(){
    return age;
    }
    public String getName(){
    return name;
    }
    public void setAge(int age){
    this.age = age;
    }
    public void setName(String name){
    this.name = name;
    }
    }
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    1、length() 方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
    2、length 属性是针对 Java 中的数组来说的,要求数组的长度可以用其 length 属性;
    3、Java 中的 size() 方法是针对泛型集合说的, 如果想看这个泛型有多少个元素, 就调用此方法来查看!
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Character
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Math.floor 是向下取整。
    Math.ceil 是向上取整。
    Math.round 是四舍五入取整
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Thread.sleep(1000);
    System.currentTimeMillis( );
    Calendar c = Calendar.getInstance();//默认是当前日期
    GregorianCalendar gcalendar = new GregorianCalendar();
    6.异常处理(异常捕获与异常的基本结构、try catch finally、throws和throw、自定义异常等)
    7.集合框架(概念、ArrayList、LinkedList、Set、Map、泛型等)
    8.Java IO流(文件、输入输出流、字节流、字节缓冲流)
    9.Java多线程(概念与作用,创建多线程的2种方法、多线程的生命周期、线程同步、线程池)
    10.Java反射机制(概念、对Class对象的使用)
    11.XML(XML基础语法、约束、解析器,数据存储到XML)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值