首页 > 其他 > 详细

2016.12.26-30周总结

时间:2017-01-03 07:27:55      阅读:172      评论:0      收藏:0      [点我收藏+]

#Java面向对象3
##1.访问修饰符
public:公开访问级别,可以被任意其他对象访问;
protected:受保护访问级别,可以被同一包中的类以及其他包中的子类访问;
默认访问级别:没有访问修饰符(default),可以被同一包中的类访问;
private:私有访问级别,只有本类以内的范围可以访问。
子类重写父类方法的时候,访问修饰符级别不能低于父类的访问修饰符。
##2.封装
封装:隐藏内部实现,暴露外部方法。
面向对象四大基本概念:继承、封装、多态、抽象。
属性封装代码示例:

package one;

public class Student {
private int age;
public int show(int age1){
if (age1 > 100){
age1 = 20;
}
return age1;
}
}
package one;

public class Test {
public static void main(String[] args){
Student b = new Student();
int a = b.show(180);
System.out.print(a);
}
}
##3.静态成员
static:初始化对象的时候,不归一个类所有,归全体类所有的变量;值不随着类的初始化而初始化;和当前类没有直接关联关系,写在当前类;修饰的变量,访问时,不需要实例化再访问,类名.变量名。
静态方法访问外部变量,变量必须为静态变量。
静态方法调用外部属性、方法,也必须为静态方法、属性。
##4.静态初始化块
静态初始化块最先执行,加载一次;
初始化块和构造函数类似,new多少个对象执行多少次。
初始化块:用于类被初始化的时候做一些工作,仅用于加载一些其他资源的时候;比构造函数更先执行,但与构造函数执行次数相同。
public class StaticStudy {
static {
System.out.println("我是静态初始化块!");
}
{
System.out.println("我是初始化块!");
}
public StaticStudy(){
System.out.println("我是构造函数!");
}
}


public class Test {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
StaticStudy s = new StaticStudy();

}
}
}
##5.static修饰符
1. 静态属性方法访问外部属性也许要static修饰
2. 调用别的方法也需要为static
3. static不能修饰类(内部类除外)
##6.内部类
使用原因:使用频率低,不单独创建Java文件。
内部类:在类的内部定义的类。内部类所在的类成为外部类。
###6.1 静态内部类
静态内部类可以访问外部类的属性或者方法,但前提条件是外部类的属性或方法也必须是`static`。
非静态方法可以访问静态属性。
public class Outer {
static int a = 10;
int b = 20;

static void f() {
System.out.println("我在静态方法f()中");
}

static class Inner {
int c = 30;

public void g() {
f();
System.out.println(a + " " + c);
}
}

public static void main(String[] args) {
Inner inner = new Inner();
inner.g();
}
}
###6.2 成员内部类
只有创建了Outer类的实例化对象后,才能使用Inner类的对象。**


public class Outer {
static int a = 10;
int b = 20;

void f() {
System.out.println("在成员方法f()中");
}

class Inner {
int c = 30;

public void g() {
b = 100;
f();
System.out.println(a + " " + c);
}
}

public static void main(String[] args) {
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.g();
System.out.println(outer.b);
}
}
###6.3 局部内部类
局部内部类是在类的方法内部定义的类。局部内部类只能在方法内部中使用。一旦方法执行完毕,局部内部类就会从内存中清除。


public class Outer {
int a = 10;

void f() {

class Inner {
int b = 20;

void g() {
System.out.println(a);
System.out.println(b);
}
}
Inner inner = new Inner();
inner.g();
}

public static void main(String[] args) {
Outer outer = new Outer();
outer.f();
}
}

###6.4 匿名内部类

#Java面向对象4
##1.抽象方法
>只声明不实现的方法 abstract (抽象方法必须写在抽象类中)
>规定好了抽象方法,子类必须重写,子类必须实现否则报错
>抽象类不能直接实例化
>抽象类可以继承抽象类
>抽象类可以有抽象方法和一般方法
>区别:抽象类不能实例化;抽象类可以有抽象方法。

public abstract class People {
protected String name;
protected int age;
public abstract void show();
public void r(){
System.out.println("抽象!");
}

}
public class Student extends People{
@Override
public void show() {
System.out.println("我是"+name+"今年"+age);

}

@Override
public void r() {
super.r();
System.out.println("小明!");
}

}

public class Test {
public static void main(String[] args) {
Student s=new Student();
s.name="杰伦";
s.age=28;
s.show();
s.r();
}
}

##2.多态
多态的两种理解:1.对象的不同方法使用同一个方法名,即重载;2.同一对象根据不同的消息执行相应的行为。
多态的技术基础:动态绑定和重写机制。
异构集合:不同对象的集合。
###a.向上类型转换
Animai a =new Cat;
>注意:父类引用指向子类实例。用向上转型只能访问到父类有子类重写的方法,子类独有的方法访问不到。
###b.向下类型转换
不安全、不科学的转换。
Animal a=new Dog;
Dog d=(Dog)a;
a.dogSay();
###c.instanceof
if (animal instanceof Dog) {
Dog d=(Dog) animal;
d.dogSay();
}
if (animal instanceof Cat) {
Cat c=(Cat) animal;
c.catSay();
}

#Java面向对象5
##1.接口概述
抽象类是对类的抽象;接口是对行为的抽象。
接口不能有构造函数,不能实例化。
接口中声明变量毫无意义。
接口中的方法都是抽象方法,不需添加abstract,且只能拥有抽象方法。
接口中只能声明静态常量,static final int a = 10。
接口不能被类继承,只能被类实现。一个类可以实现多个接口。
一个接口可以继承多个接口,以逗号分隔。
一个没有任何方法的接口,称之为标记接口。
##2.新特性
Java jdk 1.8中规定:接口内可以有能实现的方法。

default void test(){

}
##3.接口的应用
暴露类的行为,允许类的用户通过接口的实现来使用接口中的方法。
强制一个类具有某些行为。
##4.接口与多态
Dog fido = new Dog();
Mammal rover = new Dog();
Play spot = new Dog();
Object pooch = new Dog();

#Java面向对象6
##异常概述
概念:是程序执行过程中所产生的问题
原因:
1.用户输入了无效的数据
2.找不到一个需要打开的文件
3.在通讯过程中网络连接断开或者Jvm发生了内存溢出
异常的三种类:
1.检查异常
2.运行时异常
3.错误
##异常的控制流程
1.捕获这个异常,不让他沿着调用栈继续抛出:
2.捕获这个异常并继续向下抛出
3.不捕获这个异常,从而导致method()方法从调用栈中被弹出,异常对象继续抛给调用栈下面的
main()方法。
##Thowable类
Thowable有两个子类:Error类和Exception类
Error类是所有java错误类的父类,Exception类是所有异常的父类。

##捕获异常
try{
//被保护的代码
}catch(异常的名称 e){
e.printStackTrace();
//捕获块
}
try里某一行发生异常立马跳转至catch块
##多个catch块
try{
//被保护的代码
}catch(异常的名称 e){
//捕获块
}
catch(异常的名称 e2){
//捕获块
} //异常的名称从小往大写

##异常捕获的多态性
虽然一个try后可以跟多个catch块,但是catch块不能简单的以任意顺序列出。当异常发生的时候,catch块会依照他们排列的顺序被一次检查。由于多态性的存在,一个catch块可能不会被检查到。
##异常的声明与抛出
声明异常:throws用来声明某个方法可能产生某个异常
异常抛出:throw用来抛出某个异常

#Java面向对象7
1.JDK常用类
a.System 类
err“标准”错误输出流。
out“标准”输入流。
in“标准”输出流。
b.String类
charAt(int index) 返回指定索引处的 char 值。
compareTo(String anotherString) 按字典顺序比较两个字符串。
compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。
concat(String str) 将指定字符串连接到此字符串的结尾。
contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。
endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
equals(Object anObject) 将此字符串与指定的对象比较。
equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。
getBytes()使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
hashCode()返回此字符串的哈希码。
indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
isEmpty() 当且仅当 length() 为 0 时返回 true。
lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。
replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
split(String regex) 根据给定正则表达式的匹配拆分此字符串。
substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
toCharArray() 将此字符串转换为一个新的字符数组。
toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
toLowerCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
valueOf(boolean b) 返回 boolean 参数的字符串表示形式。
c.Stringbuffer & Stringbuilder类
Stringbuffer线程安全
Stringbuilder线程不安全
d.Calendar抽象类 与GregorrainCalendar类
add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。
get()得到日期对象中的年、月、日、小时、分、秒。
set()修改日期对象中的年、月、日、小时、分、秒。
2.数学运算
abs(double a) 返回 double 值的绝对值。
max(double a, double b) 返回两个 double 值中较大的一个
min(double a, double b) 返回两个 double 值中较小的一个。
random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
3.包装类与自动装箱拆箱

public static void main(String []args){
Integer i1=new Integer(100);
int i2=i1.intValue();//拆箱int i2=i1;自动拆箱
System.out.println(i2);
}

2016.12.26-30周总结

原文:http://www.cnblogs.com/liaoxr/p/6243439.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!