Java 学习笔记(2015.7.20~24)Java 学习笔记(2015.7.20~24)

Java


day11

  • 父类中使用public定义的方法,子类的访问权限必须是public

  • private定义的成员只能自己用

  • 覆写方法时可以扩大权限,比如default>public ,不能缩小权限,会报错

  • private方法不能被子类继承,但是可以被父类的方法调用

  • 声明成员变量,一般名字前加个m

  • 抽象类中是可以定义构造方法的

  • 在接口中的抽象方法必须定义为public权限,不写也是public

  • 向上转型,父类指向子类

  • 接口跟抽象类的异同

  • 熟悉匿名内部类

  • 接口由全局常量和抽象方法组成,所以

  • String AUTHOR = "Jensen";等价于public static final String AUTHOR = "Jensen";

  • void print();等价于public abstract void print();

  • String getInfo();等价于public abstract String getInfo();

  • Java允许一个接口继承多个接口:
    interface 子接口 extends 父接口A,父接口B,...{ }

  • 对象 instanceof 类 返回boolean类型

  • 抽象类 制作模板

  • 接口 制定标准

  • 设计模式 工厂模式
    在接口和子类之间加入一个过渡端,通过此过渡端取得接口的实例化对象,一般都会称这个过渡端为工厂类。

  • "orange".equals(className) 为什么在进行字符串判断时要把字符串常量写在前面?
    答:这样做可以避免空指向异常,比如传入的值为null时

数组

数组可以看成是多个相同类型数据组合
数组变量属引用类型

一维数组
数组的声明
int[] a;  // 建议使用这种
byte[] c;
int b[];
注意:
Java语言中声明数组时不能指定其长度

初始化
静态初始化
int b[] = new int[]{1,2,3,4,5};// 静态初始化
int[] c = {1,2,34,56,7};// 静态初始化
动态初始化

根据下标从数组中取值,下标:可以是整型常量或整型表达式
下标从0开始

在控制台打印数组中所有元素

每个数组都有一个属性length指明它的长度

排序:
 冒泡排序  选择排序  插入排序  希尔排序

排序:
 替换
 if(a[i]>=a[j]){
  int temp = a[i];
  a[i] = a[j];
  a[j] = temp;
 }

二维数组
二维数组可以看成以数组为元素的数组
声明
int[][] a
int b[][]
初始化
int b[][] =
{{1,2},{2,2,3,45,6},{2,3,6,7}};
int[][] c =
new int[][]{{1,2},{2,2,3,45,6},{2,3,6,7}};

二位数组初始化
先初始化高维
int[][] a = {{1,23,4},{1,3,4},{2222}};

day12

拆箱与装箱

int x = 30;Integer i = new Integer(x);//装箱int y = i.intValue();//拆箱

包装类的应用

  • 包装类在实际中用的最多的是将字符串变为基本数据类型的操作,例如将一个全由数字组成的字符串变为一个int或float类型的数据。

String str1 = "30";String str2 = "30.3";int x = Integer.parseInt(str1);float f = Float.parseFloat(str2);

匿名内部类

接口本身是不能直接进行实例化的,所以在接口实例化后要有一个大括号,在其中编写具体的实现方法。

匿名字符串放在 data segment 里面

字符串,length() 方法
对象,length 属性

day13

1、常用类String

2、正则表达式

  • 格式不用记

  • 句点.表示单个字符

  • 方括号[]表示可能出现字符集里的单个字符

  • 括号()可表示多个字符

  • 大括号{}表示次数

  • 转义字符“\”

  • 一般正则表达式是由通配符和固定字符组成

  • 栗子:

    • 字母 _ 数字 大于6小于10位
      "\w{6,10}"

    • 邮箱:xxx@xxx.com
      "\w+@\w+\.\w+"

    • 手机:以13 15 18 17 开头   11位
      "[1][3578]\d{9}"

只要记住:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

3、常用类 StringBuffer 代表可变的字符序列

String
StringBuffer

reverse()

注意:StringBuffer默认容量16;
如果传入的数据量大于当前容量
StringBuffer容量将发生变化 2*之前容量 + 2

day14

1、StringBuffer与StringBuilder的区别:

  • StringBuffer  :同步 线程安全  效率较低

  • StringBuilder :异步 不安全    单线程效率高

2、基本数据类型包装类

  • 基本数据类型包装类
    booleanBoolean
    byteByte
    charCharacter
    shortShort
    intInteger
    longLong
    floatFloat
    doubleDouble
  • Integer

    • public static int parseInt(String s)

    • public static Integer valueOf(String s)

  • java5.0之后有自动拆装箱功能,如下

Integer i = new Integer(100);int j = i + 100;// 自动拆箱int k = 100;Integer m = k;  // 自动装箱
  • Character
    isUpperCase(char ch)       判断字符是否是大写字母
    isLowerCase(char ch)       判断字符是否是小写字母
    isLetter(char ch)          判断字符是否是字母
    isDigit(char ch)           判断字符是否是数字

3、Date、Calendar、DateFormat等与时间相关的类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {    
    public static void main(String[] args) {
            // 创建日期格式对象        
            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");        
            try {            
                Date date = format.parse("2011年11月11日 11:11:11");            
                System.out.println(date.getTime()); 
            } catch (ParseException e) {
                  e.printStackTrace();        
              }       
             // 创建Calendar对象        
             Calendar calendar = Calendar.getInstance();        
             int year = calendar.get(Calendar.YEAR);        
             System.out.println("year = " + year);        
             int month = calendar.get(Calendar.MONTH);        
             System.out.println("month = " + (month + 1));       
             int day = calendar.get(Calendar.DAY_OF_MONTH);        
             System.out.println("day = " + day);    }   }

输出结果:
1320981071000 //从1970到该时间点的毫秒数
year = 2015 //打印今天的日期
month = 7
day = 25