内部类与常用类Day11

内部类与常用类Day11

内部类

内部类:
	定义在内部的类
外部类 :
	相对于内部类,定义在外部的类
	注意;
		1.外部类不能用static修饰
		2.外部类的访问权限修饰符不能用private
		
	匿名对象:
		没有对象名的对象,称为匿名对象 
内部类的分类:
	1.成员内部类:
		
	2.静态内部类:
		定义位置:类中,方法以外
	3.局部内部类
		定义位置:方法体重
	4.匿名内部类
		定义位置:值或者实参中

成员内部类

定义位置:
	类中,方法以外
语法:
	访问权限修饰符 class 类名{
	
	}
注意:
	成员内部类中不能定义静态成员(比如:静态属性,静态方法,静态代码块)
特殊情况:
	1.当外部类属性和内部类属性名称相同时,如何区分
		this.属性名  表示内部类属性
		外部类名.this.属性名  表示外部类属性
	2.当外部类方法与内部类方法同名时,如何区分
		this.方法名(实参列表)  表示内部类方法
		外部类名.this.方法名(实参列表)  表示外部类方法
	创建对象方法:
		外部类名.内部类名 对象名 = 外部类对象.new 内部类类名(实参列表);
        

静态内部类

定义位置:
	类中,方法以外
	唯一用static修饰的类.
语法:
	访问权限修饰符 static class 类名{
	
	}
注意:
	外部类可以定义的,静态内部类都可以;

特殊情况:
	1.外部属性名与内部属性名相同时,如何区分
		当属性为静态时:
			用内部类名.属性名  表示内部类属性
			用外部类名.属性名  表示外部类属性
		当属性为非静态属性时
			(内部类中不能直接使用外部类非静态成员)
			
静态内部类就是用static修饰的成员内部类;
创建对象方法:
		外部类名.内部类名 对象名 = 外部类对象.new 内部类类名(实参列表);

局部内部类

定义位置:
	类中,方法中;
语法:
	class 类名{
	
	}
注意:
	1.没有访问权限修饰符
	2.局部内部类不能定义静态成员(静态属性,静态方法,静态代码块)
	3.局部内部类只能在定义的方法中使用,而且必须要在类定义完成后
特殊情况:
	1.当外部类属性名和内部类属性名相同时
		this.属性名  表示内部类属性
		外部类名.this.属性名  表示外部类属性
	2.当外部内方法名和内部类方法名相同时,如何区分
		this.方法名(实参列表)  表示内部类方法
		外部类名.this.方法名(实参列表)  表示外部类方法
如何创建对象:
	内部类类名 对象名 = new 内部类类名(实参列表);
该类只能在定义的方法中使用;

匿名内部类(***)

没有类名的内部类
定义位置:	
	实参或者值
语法:
	父类名 /父接口名 对象名  = new 父类名 /父接口名(){
		属性;
		方法;
		代码块;	
	}
特点:
	一个匿名内部类只能创建一个对象
注意:
	1.内部类中不能定义静态成员(静态属性,静态方法,静态代码)
	2.匿名内部类必须重写所有抽象方法

包装类

八个基本数据类型 对应的包装类:
    char 		Character		
    byte		Byte
    int			Inteager
    short 		Short
    long		Long
    double		Double
    float		Float
    boolean		Boolean 
    
 自动拆箱与自动装箱
 自动拆箱:
 	将基本数据类型的包装类转换为基本数据类型
 自动装箱:	
 	将基本数据类型自动转换为基本数据类型的包装类
 数字缓冲区
 不用创建地址
 -128 - 127;
 面试题:
 Integer i1 = 128;
 Integer i2 = 128;
 sout(i1 == 12);
 	false

常用类

Object
Random
	随机数:
	nextInt(最大值)
	nextBoolean()
Scanner
	获取键盘录入:
	next()
	nextInt()
	...
System
	系统:
	常用方法:
        in:输入
        out:正常输出
        err:错误输出
     常用方法:
     	arraycopy():拷贝数组
     	exit();	退出	(禁用)
     	0:正常退出
     	其他:非正常退出
     	currentTimeMillis(); 获取现在至1970年1月1号00:00:00的毫秒值
     	gc();垃圾回收机制;
     	
Arrays
	数组工具类
	static sort(int[] nums):排序(快排)
	static toString(Object[] a):将数组转换为字符串 
字符串相关类
	
    可变字符串
        StringBuffer
            特点:
                1.线程安全
                2.jdk1.0出现
                3.效率比StringBuilder慢
            特有方法:
                append();添加到尾部
                insert(index ,str) 指定位置插入
                ...
        StringBuilder
            特点:
                1.线程不安全
                2.jdk1.5出现的
                3.效率比StringBuffer块
            特有方法:
                append();添加到尾部
                insert(index str):指定位置插入
	不可变字符串
		String	
			提供的方法:
				增
					+:字符串连接
				改
					字符串1.replace(要替换的字符, 替换后的字符 )
					注意:替换后的返回值是一个字符串;
				查
					字符串1.length():查询字符1串长度
					字符串1.isEmpty():查询字符1串是否为空
					字符串1.contains(子字符串):查询字符串1中是否包含子字符串
					字符串1.indexOf(子字符串):获取子字符串第一次出现的位置(开始位置 下标从0开始),如果查询子字符串不存在,返回-1;
					字符串1.lastIndexOf(子字符串):获取子字符串最后一次出现的位置(开始位置 ,下标从0开始),如果查询不存在,则返回-1;
					字符串1.equals(子字符串):判断两个字符串内容是否相同(不忽略大小写)
					字符串1.equalsIgnoreCase(子字符串):判断两个字符串是否相同(忽略大小写)
					
					字符串1.trim():忽略字符串前后空白
					字符串1.endsWitch(字符串2):判断字符串1是否以字符串2结尾;
					字符串1.startWith(字符串2):字符串1是否已字符串2作为开始;
					字符串1.toUpperCase(),将字符串中的小写字母全部转化为大写字母;
					字符串1.toLowerCase(),将字符串中的大写字母全部转化为小写字母;
					字符串1.toCharArray(),将字符串转化为字符数组
					字符串1.charAt(index),获取指定位置字符;
					字符串1.getBytes(),将字符串转换为字节数组;
					
					字符串1.split(字符串2),按照字符串2对字符串1进行切割
						注意:
							使用.切割是使用\\.
					字符串1.substring(开始位置, 结束位置):截取字符串,包含开始位置字符,不包含结束位置字符.
					字符串1.substring(开始位置):截取字符串,从开始位置到字符串结尾	
									
			注意 : 当字符串量很大时(大于10000),操作字符串,使用可变字符串.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值