Java实训第十三天8/11

来源:互联网 发布:java多态的作用 编辑:程序博客网 时间:2024/05/21 17:18
1.通过父类引用执行子类对象(实例),只能访问父类中声明的方法
如果该方法被重写了,那么访问的就是重写后的方法
public class Person{
public void print(){
}
public void show(){
}
}
public Man extends Person{
public void show(){

}
public void detail(){
}
}

Person p=new Man();
p.print();//父类中
p.show();//子类中的重写的方法
p.detail();//编译失败,父类引入无法访问子类中特有的行为
instanceof
2.Object类中的方法


摘要 
protected  Object clone() 
          创建并返回此对象的一个副本。 
boolean equals(Object obj) 
          指示其他某个对象是否与此对象“相等”。 
protected  void finalize() 
          当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 
 Class<?> getClass() 
          返回此 Object 的运行时类。 
 int hashCode() 
          返回该对象的哈希码值。 
 void notify() 
          唤醒在此对象监视器上等待的单个线程。 
 void notifyAll() 
          唤醒在此对象监视器上等待的所有线程。 
 String toString() 
          返回该对象的字符串表示。 
 void wait() 
          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 
 void wait(long timeout) 
          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。 
 void wait(long timeout, int  
3.字符串
a)使用双引号包裹的称字符串
String str="a";//常量值
String n="1";
str+="b";//在常量池中产三个字符串对象
"a"
"b"
"ab"

new Student();
String str=new String("abc");
以上语句产生了几个对象
"abc"
new String();
b)String 不属于基本类型,属于引用类型
但是可以像基本类型一样使用

int a=12;
String n="aaa";
String m=new String("aaa");
c)字符串值的比较
== :比较的是内存地址(常量池中的地址)
equals:比较的是内容
String n="aaa"; //常量池中的位置
String m=new String("aaa");//堆中的位置
n==m  :结果 为false
n.equals(m) :true
记住了:以后字符串比较 必须使用 equals
d)String 是final修饰的所以不能被继承
String
System
Math
4.正则表达式:
a)必须能先编译模板
[]:表示其中的任意一个字符
[a-z]:匹配任意一个小写字母
a  b  c  aa
1[245][0-9]
手机号码:
1[34578][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]

{}:表示紧挨着的表达式出现的次数
{n} :正好 n 次
1[34578][0-9]{9}
{n,m}:最少n次最多m次
[a-z][a-zA-Z0-9]{5,11}
以小写字母开头,包含数字字母组合 6-12 位之间
{n,}:最少n次,多了不限
.:在正则表达式中 表示任意一个字符
\:是正则表达式中 转义字符
邮箱格式:
[a-zA-Z0-9]{1,}@[a-zA-Z0-9]{1,}\.[a-zA-Z0-9]{1,}
[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+
b)java 中如何使用
正则表达式 就是一个 字符串 ,必须把字符串构建为模板才可以使用
5.包装类:
数据类型的转换
String 转基本类型:其中的数据必须是基本类型的值才可以
String 转 int 那String中的内容必须都是整数值才可以

6.自动装箱和自动拆箱
jdk 1.5 后
自动装箱:自动把基本类型转换为包装类型
自动拆箱:把包装类转为基本类型
Integer
不管那种包装类,只要为null 都不能转换


7.String
a) == 和 equals
equals 被 String 给重写了,比较是的两个字符串对应位置的字符
Object 中 equals 是比较两个对象的内存地址
如果一个类中没有重写equals方法那么 == 和equals 意思相同
String n="hello";
String m=new String("hello");
n==m  false
n.equals(m)  true
b)String 常用的方法
indexOf()/lastIndexOf()  :返回的字符串第一次出现的位置
返回 -1 表示没有找到
substring(begin,end):[begin,end)
begin、end的值在0 到字符串的长度之间
equals
concat(): "hello".concat("abc")  helloabc
split(""): 按照某个正则表达式对字符串进行分割
如果为空,把每一个字符单独分割
replace(old,new):会产生一个新的字符串,原始的不会改变
replaceAll(regex,"")
String str="a1aaab1dddda2";//1aaaa1bdd2a
//str=str.replaceAll("[a-z][0-9]","X");
str=str.replaceAll("([a-z])([0-9])","$2$1");
valueOf()
String.valueOf(123);  "123"
format():格式化
double price=1234.56789;
c)字符串的不变性
String str="abc";
str+="ef";
abc 
ef 
abcef
8.StringBuffer:就是给String 添加了一个缓冲区
9.StringBuilder
现有 数字如下
1234
1234
1,2345
1,2345,6789

1.以字符串操作
123456789 长度%4  
 长度/4 
String str="123456789";
int r=str.length()%4;
String temp=str.substring(0,r);
int n=str.length()/4;
String t=str.substring(r);//23456789
for(int i=0;i<n;i++){
temp+=","+t.substring(i*5,(i+1)*5-1);  //0=i*5     4=(i+1)*5-1
// 5,9    5=i*5     9=(i+1)*5-1
}

2. 123456789
9876,5432,1
10.工具类:
a)String
String str="a"+"b"+"c";
String a="a";
String b="b";
String c="c";
String d=a+b+c;
b)StringBuilder:实现字符串操作
c)Object类中的方法
d)包装类 :
e)日期格式化
i)把日期格式为字符串
Date date=new Date();
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM");
String time=f.format(date);
ii)是把字符串格式化为日期
String time="2017-02-12";
//q其中的格式必须与字符串的格式一致
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
Date date=f.parse(time);//必须处理异常
11.常问的题目
a)String 类型比较
String str="a";
String b=new String("b");
String cc="ab";
String dd=str+"b";  //ab
System.out.println(cc==dd);//false
b)String 与StringBuilder或StringBuffer
c)StringBuilder和StringBuffer
d)各种类型转换
e)Math.ceil() floor() round()
f)Date 
getYear()
getMonth()
编程题目
a)千分位显示
b)通过 Date 设置时间
c)获取某个字母出现的次数
d)日期格式化
1234 转换为大写
壹仟

String[][] nums=new String[10][2];
nums[0][0]="a";
nums[0][1]="2";
Map