内部类; 目的就是更好的封装
1.方法内部类: 必须在 方法中创建 对象,在执行过程中必须 调用该方法
public void run(){
没有 class A{
}
A a =new A();
}
2.匿名类: 一般用于创建接口对象; spring 框架动态代理,
new 接口(){
重写的方法
}.run();
3.成员内部类:
内部类可以用到外部类的所有资源,
外部类必须创建内部类对象 才可以使用
Outer.Inner i = new Outer().new Inner();
Outer o = new Outer();
Inner i = o.new Inner();
4.静态内部类:
static 修饰的内部类:
特点: 静态内部类必须加载 外部类的 静态资源,非静态资源是加载不了的
类和类之间对的关系: UML 统一建模语言
组合--->聚合---->关联----->依赖----->继承
实现 接口和类的
}
String: 特点 String不可改变类,使用final 修饰的类 ,不可以被继承
StringBuffer : 可改变 类, 字符串的 缓冲区
String构造器:
1.new String();
2.new String(byte[] b);
3.new String(char[] c);
4.new String("123");
****5.new String("123","UTF-8"); 指定字符集编码
String的常用方法:
1.charAt(int index); 指定下标的字符
2.endsWith();
startWith();
3.split("#");
4.trim(); 去掉两边空格
5.length(); 返回指定字符串的长度
6.valueOf(); 将任何数据类型都转换为字符串
特点: static , String.valueOf();
7.replace(String oldChar,String newChar); 新字符替换 老字符
8.toLowerCase();
toUpperCase();
*** 9.toCharArray();将 字符串 变成 char类型的数组
10.contains(""); 判断是否包含指定字符 , true ,false
11.indexOf((int)'A'); 返回执行字符出现的位置
lastIndexOf();
12.concat("");拼接
13.boolean isEmpty();判断一个字符串是否为 空
String str = "";
14.substring(int fromIndex); fromIndex --- str.length
substring(int fromIndex,int endIndex);
包含头 不包含尾
15.equals(""); 判断 两个字符串是否相等 true , false
16.replaceFirst(""); 将字符串中的第一个字符 替换
*** 17.getBytes(); 将指定字符串变成byte数组
getBytes("");
--------------------------------------------------
split方法中 处理特殊字符: . * +
\\转义字符 [*]
======================================================================
String:
在jvm内存中存储方式:
new 关键字帮你做了几件事儿:
1.构建一个实例对象
2.在堆内存中 开辟另一个 空间
3.返回一个对象的 引用 给 变量名
1. == 如果比较数字 就是直接比较 数据的的大小
== 如果比较引用数据类型 就是比较 引用数据类型的内存地址
2. equals() 是 Object类的方法
String 类 重写 Object类的 equals
所以 它是 安装 自己的 内容 来比较的;
所以 equals()在比较字符串时 ,比较的是 内容
equals比较自定义对象时呢?
自定义对象 如果没有重写 equals, 那么调用的是 Object类
的equals,采用的是 == 所以为 false
如果想比较内容,必须在自定义对象中 重写 equals();
问题: == 和 equals 区别?
1.先使用String 类 解释 == 和 equals
2.在拿 自定义对象 解释 == 和 equals
intern();
-----------------------------------------
java.lang.* 不需要导包
java.util.* 必须导包
日期类:
java.util.Date; 系统时间
java.sql.Date; 数据库时间
util包下Date的起始时间: 1970, 00:00:00
jdk1.8 有一个Instant类 可以直接调用 now();系统时间
常用构造器:
new Date();
new Date(long date); //毫秒值
常用方法:
getTime(); 获取当前系统时间的 毫秒值显示形式
日期的格式化:
SimpleDateFormat: 格式化
1.parse(String str); Date 将字符串类型转换为日期类型
2.format(Date date); Strinng 将日期类型转换为字符串类型