⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java6.txt

📁 达内IT培训Core Java全部笔记 是学习Java编程的好东西
💻 TXT
字号:
sd 0804 Javaday6   2008年6月18日Review:abstract 未实现     (抽象类可以修饰类,方法抽象类:无法被实例化,不能new+本类构造,但能new+子类抽象方法:没有方法体,不允许直接调用interface 接口看作一种特殊的抽象类接口没有构造,属性都是public static final,所有的方法都是public abstract子类中重写类 extends 类(单继承)类 implements 接口(多继承)接口 extends 接口(多继承)private 	本类无修饰		本类	本包protected本类	本包			可被子类继承public	本类	本包(需导入)	子类			其他Objectfinalize 垃圾回收	JVM自动调用的方法clone()方法equals()比较对象是否相等		==比较的是真实内存地址教室类作业:------------------------------------------------------------------------------------------package com.tarena.day06;public abstract class Person {//abstract抽象类     Person	private String name;//封装属性	private int age;	public Person(){}		//最好写出无参构造	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	}------------------------------------------------------------------------------------------package com.tarena.day06;public class Student extends Person{//学生类继承Person父类	private int id;//子类属性	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}}------------------------------------------------------------------------------------------package com.tarena.day06;public class Teacher extends Person{//定Teachends类继承petsin类	private double sal;	public double getSal() {		return sal;	}	public void setSal(double sal) {		this.sal = sal;	}}------------------------------------------------------------------------------------------package com.tarena.day06;public class Admin extends Person{//网络管	private String adept;	public String getAdept() {		return adept;	}	public void setAdept(String adept) {		this.adept = adept;	}	}------------------------------------------------------------------------------------------package com.tarena.day06;public final class ClassRoom {//final不可更改的教室类//没有必要产生子类,所以加上final	private final Student[] stu;//属性  //数组	private static Teacher t;	private static final Admin	ADMIN = new Admin();//是常量	public ClassRoom(int i){ //确定人数		if(i>0){//判断			stu = new Student[i];		}else{			stu = null;		}	}	public static Admin getADMIN() {		return ADMIN;	}	public static Teacher getT() {		return t;	}	public static void setT(Teacher t) {		ClassRoom.t = t;	}	public static Admin getADMIN() {
		return ADMIN;
	}	public Student[] getStu() {		return stu;	}}		------------------------------------------------------------------------------------------Java06toString 用String去描述一个对象------------------------------------------------------------------------------------------package com.tarena.day06.object;public class TestToString {	@Override	public String toString(){		//使用的时候最好重写toString		return "这是一个测试类";	}	public static void main(String[] args) {		TestToString tts = new TestToString();		System.out.println(tts.toString());		System.out.println(tts); //打印对象的时候会自动调用对象的toString方法		System.out.println(tts + "abc");	//在打印一个对象的时候或字符串连接的时候会自动调用toString()	}}输出结果:这是一个测试类这是一个测试类这是一个测试类abc------------------------------------------------------------------------------------------加法(+):两种解释:加法;	           字符串连接:			1.加号两端都是数字或是可以转成数字(主要针对char)的时候都是按加法处理			2.只要一端是String 就按字符串连接处理			3.如果两端没有String,又不都是数字,那一定是非法的从语法上可以实现 equals和hashcode不一致,规范上应该是一致的int+"" 将int型转换成String类型如果想要把String类型转换成int 就要用到封装类**封装类(Wrapper):		基本类型的对象化Integer:	1.对象化基本类型2.把一个String转化成一个 int	常用的 static int parseInt(String)  将String字符串转换成int------------------------------------------------------------------------------------------package com.tarena.day06.object;public class TestInteger {	public static void main(String[] args) {		Integer i1 = new Integer(2);		Integer i2 = new Integer("2"); //只有这两种效果		System.out.println(i1==i2);		//new 了两次所以地址不一样,false		System.out.println(i1.equals(i2));//equals被重写了,比较的是值,所以结果是true		int temp = Integer.parseInt("24");//字符串转换成int,如果是"24a"就会报错,这不是数字格式(十进制)		System.out.println(temp);		Integer i3 = 128;//5.0新特性,自动装箱		Integer i4 = 128;//自动把int转换为Integer		int i5 = i3 + i4;	//自动解箱,把Integer转换成int,"+"两端是int型		int i6 = new Integer(128); //自动解箱		System.out.println(i3==i4);//filse//Integer池超过了容量,所以这时候就在堆中new了一个新的,所以地址值不同了,如果是 -128~127则为true		System.out.println(i3.equals(i4));//equals被重写,所以比较的是值,这里是true		System.out.println(i3==i6);//如果是自动装箱就是false,自动解箱就是true,这里发生的是自动解箱		//Integer i7 = null;		//int i8 = i7;//自动解箱在对象为空的时候会失败,小心对象不能为空		double d = Double.parseDouble("24.34");//将字符串转换成Double类型	}}输出结果:falsetrue24	------------------------------------------------------------------------------------------Integer 自动装箱池	只应用自动装箱的时候,这个池的大小是  -128~127,是以Integer[],长度是256,如果没有超过-128~127那就不会new ,如果超过了就会new 一个新的在堆中StringString 是一组不可改变的unicode字符序列, String应用了一种不变模式,一个String的值不可能改变的,可以改变的是指针,双引号的定义是字面值所有字面值都会放在常量池中------------------------------------------------------------------------------------------package com.tarena.day06.string;public class TestPool {	public static void main(String[] args) {		String s1 = new String("abc");	//在内存中生成一个对象		String s2 = new String("abc");		String s3 = "abc";		//在内存中生成两个对象		String s4 = "abc";		System.out.println(s1==s2);		System.out.println(s1.equals(s2));				System.out.println(s3==s4);		System.out.println(s3.equals(s4));		String s5 = s3 +"d";//对字符串进行连接(+)的时候,结果不在池里		String s6 = "abcd";		System.out.println(s5==s6);//s5不在池里,地址一定不同		System.out.println(s5.equals(s6));//比较内容,所以是true	}}------------------------------------------------------------------------------------------String API构造:String(byte[], int int)	  String(String)方法:1.startswith()以...开始  endswith()以...结束2.equals() 比较	/length() 长度3.replaceall() 替换4.split(String)拆分5.substring() 截取6.indexOf() 查找7.toLowCase()/toUpperCase() 改变大小写8.trim() 首尾截空白9.matchs()匹配正则表达式10.byte[] new String	String getBytes byte[]------------------------------------------------------------------------------------------package com.tarena.day06.string;public class TestString {	public static void main(String[] args) {			String s1 = "zhang,man,25";			String[] ss = s1.split(",");			for (int i = 0; i < ss.length; i++) {				System.out.println(ss[i]);			}			String s2 = "  a b c   "; //只去首尾5个空白			System.out.println(s2.trim().length());			String s3 = "abcdddabcdddabc";			//把所有abc的位置显示出来			int index = 0;			for (int i = 0; i < s3.length(); i++) {				index = s3.indexOf("abc",index);					if(index==-1)break;				System.out.println(index++);			}	}}输出结果:zhangman2550612------------------------------------------------------------------------------------------正则表达式:不仅仅为java服务,验证用户输入的合理性[ ] 在[]选一个( ) 在( )内的视为一个整体 如:(com)| (com.net)a-z a到z所有小写字母[a-z A-Z 0-9 _]字母,数字,下划线\ 转义字符| 或者\d 所有数字[0-9]\D 所有非数字\w 单词里拥有的字符\W 非单词字符[^ ]  中括号里如果有^ 代表非?	0-1个+	1-n个*	0-n个{n}	正好n个{n,}	>=n个{n,m}	大于等于n,小于等于m,双闭区间[n,m]正则以^ 开头 以$结尾	------------------------------------------------------------------------------------------package com.tarena.day06.string;public class TestZz {	public static void main(String[] args) {		String name = "^[a-zA-Z0-9]{5,12}$";		//5-12位的字母数字下划线做用户名		String temp = "@zhang";		String zip = "\\d{6}";		//		\\才是\		\d的时候可以不用^$		String temp1 = "100032";		String email = "^([a-zA-Z0-9_-])+[@]([a-zA-Z0-9_-|])+[.]((com)|(net)|(com.cn))$";//在中括号内的视为一个整体		String temp2 = "100086@sina.net";		if(temp.matches(name)){			System.out.println("输入正确");		}else{			System.out.println("输入错误");		}		if(temp1.matches(zip)){			System.out.println("邮编输入正确");		}else{			System.out.println("邮编输入错误");		}		if(temp2.matches(email)){			System.out.println("邮箱输入正确");		}else{			System.out.println("邮箱输入错误");		}	}}输出结果:输入错误邮编输入正确邮箱输入正确------------------------------------------------------------------------------------------在String中与正则表达式相关的方法(如:split/replaceAll等),在遇到特殊字符串做参数的时候,注意转义------------------------------------------------------------------------------------------package com.tarena.day06.string;public class Test {	public static void main(String[] args) {		String te = "1$2$3$4";		String[] re = te.split("\\$");		for (int i = 0; i < re.length; i++) {			System.out.println(re[i]);		}		String a = te.replaceAll("\\$",",");		System.out.println(a);	}}输出结果:12341,2,3,4------------------------------------------------------------------------------------------String的修改对于内存来说是非常大的开销,所以就有一组可以改变的unicode字符序列,就引入StringBuffer,但后来在5.0后被替换成StringBuilderStringBuffer支持多人并行操作,但是效率比较低StringBuilder多人并行操作会出错,但是效率比较高并行与串行并行:同时进行串行:一个接一个进行StringBuilder/Buffer1.构造:new 的时候传参是String类型的2.append  insert  replace  delete3.反转:reverse()   容量:capacity()StringBuilder/StringBuffer调用方法时自身内容改变,而String调用方法的时候是不变的,想要改String除非重新赋值,否则无法修改------------------------------------------------------------------------------------------package com.tarena.day06.string;public class TestStringBuilder {	public static void main(String[] args){		StringBuilder s1 = new StringBuilder("abc");		StringBuilder s3 = s1;	//与s1指向同一个SrtingBuilder		System.out.println(s1.length());//长度为3		System.out.println(s1.capacity());//容量是19		s1.append("d");//append追加到序列		s1.append("e");		StringBuilder s2 = s1.append("e");		System.out.println(s1.length());//长度变为5		System.out.println(s1.capacity());	//容量还是19,没有超过19,容量够用		System.out.println(s1==s2);		System.out.println(s3);		String str = new String("abc");		str = str.substring(1);		System.out.println(str);	}}输出结果:319619trueabcdeebc------------------------------------------------------------------------------------------作业:String temp = "zhang,man,25,zhang$163.net;li,man,26,li@rr$wang,lady,21,wang@sina.com";要求拆分出人员信息,验证人名和email是否符合要求,如果符合要求,放入对象中

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -