标签:java
Java 学习笔记(2015.7.20~24)Java
父类中使用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}};
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 属性
格式不用记
句点.表示单个字符
方括号[]表示可能出现字符集里的单个字符
括号()可表示多个字符
大括号{}表示次数
转义字符“\”
一般正则表达式是由通配符和固定字符组成
栗子:
字母 _ 数字 大于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();
String
StringBuffer
reverse()
注意:StringBuffer默认容量16;
如果传入的数据量大于当前容量
StringBuffer容量将发生变化 2*之前容量 + 2
StringBuffer :同步 线程安全 效率较低
StringBuilder :异步 不安全 单线程效率高
基本数据类型 | 包装类 |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
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) 判断字符是否是数字
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
标签:java
原文地址:http://jensen.blog.51cto.com/10505289/1678329