重载、访问修饰符、静态、常用类
1.方法的重载
在一个类中,方法名相同,参数不同(个数、类型、次序不同),构成方法重载。方法的重载与访问修饰符、返回值类型、方法参数名没有关系!
特点:
- 方法名相同
- 参数列表不同(参数个数、参数类型、顺序不同)
如果方法名相同,参数列表也相同,此时虚拟机就懵逼了,不能分辨到底调用哪一个方法。
注意:方法重载不考虑返回值,不考虑参数名,不考虑访问修饰符。
2.包和修饰符
2.1包
跨包请求的时候需要导入包:import 包名.类名;导入指定类import 包名.*;
2.2修饰符
使用修饰符定义了类和类中的字段或者方法时。可以限定该类或类中字段或方法能被哪些方位的类或者方法来使用。
- 类的修饰符(两种):public 默认(不写就是默认)
public:所有包中都可以访问 默认:同包下的类可以访问,其他包不能访问 - 类中属性/方法修饰符(四种):public、private、proteced、默认
public 公共的:主要修饰成员变量和方法
public 公共的 公共wc。 一个项目中都可以。
protected 受保护的 小区里的wc。
默认:default friendly
private 私有的 自己家的wc
// 访问修饰符:
// 1.针对类的 public , 默认
// 1.针对属性和方法的 public,protected,默认,private 4 // public: 在任意包任意类中可以访问到
// private: 只在当前类中能被访问,其它包其他类都不能访问
// 默认(不写访问修饰符): 在同包的类中可以访问,在其它包的类中不能访问
2.3static关键字
static:静态的
用来修饰成员变量,则该属性就成为类属性,所有该类的实例对象共用这一个属性。任何一个类修改该变量的值,大家看到的都是修改过的值。在内存中static属性是所有类实例共有的内存地址。static来修饰方法,则该方法就成为静态方 法,可以直接通过类名访问,一般在工具类中定义工具方法。
静态变量和实例变量的区别:
1.实例变量,依赖于实例对象而存在。访问实例变量的时候,必须通过实例对象来访问
2.实例变量,在内存中可以有多份(内存中创建了多少实例对象,就有多少实例变量) 每个实例对象的实例变量互不影响
3.静态变量,不依赖于对象而存在。直接与类关联,可以通过类名来访问
4.静态变量,在内存中只有一份,被所有实例对象共享。
- static修饰的变量叫静态变量
- static修饰的方法叫静态方法
- static修饰的代码块叫静态代码块
特点:
所有的静态(静态变量和静态方法)都属于类 (全局)
- 静态属性和静态方法可以直接通过 类名.静态属性 类名.静态方法() 来使用,这是推荐的 方式。当然也可以通过实例对象来访问静态属性和静态方法,但是这种做法不推荐
- 静态方法中,只能访问静态属性和其它静态方法。不能访问实例属性和实例方法
- 实例方法中,可以访问静态属性和静态方法,也可以方法实例属性和实例方法
- 静态代码块,在类被加载时自动调用。
3.String类
基本数据类型(四类八种) :不属于Object类型的继承体系之下
引用数据类型(字符串,数组,自定义类型) :属于对象类型 Object类型的继承体系之下
3.1什么是String
字符串,引用数据类型。基本数据类型变量存储的是地址,引用数据类型存储的是数据的地址。
特点:
- 字符串不可变,每个字符串都是一个对象
- 因为字符串不可变,所以字符串是可以共享的
- 字符串的效果相当于一个字符数组,但是其底层是用byte[]数组实现的
3.2字符串常用方法
替换中间的间隔符
String str="System-out-print";
System.out.println(str.replace("-",""));
输出结果是:Systemoutprint
小结:
栈中存的是变量,new出来的对象存在堆中,常量在常量池。
String str1 = “abc”; 先去常量池中找”abc“ 是否存在,如果存在直接引用,不存在,就 创建。
String str2 = “abc”;先去常量池中找”abc“ 是否存在,如果存在直接引用,不存在,就创建。
==:用法
- 如果是基本数据类型,比较的是变量的值。
- 如果是引用数据类型,比较的是变量中存储的数据的地址。比较内容用equals方法。
3.3StringBuffer和StringBuilder
在java中字符串就是常量。就算对一个字符串进行操作,原来的字符串还是不会改变,只不过又 生成了新的字符串。
我们做的对字符串的任何操作,都不会改变原有字符串,但是会创建新的字符串对象
StringBuilder和StringBuffer都可以用于字符串拼接的场景,提升空间利用率。
StringBuilder线程不安全,性能高。StringBuffer线程安全,性能低。
StringBuilder 是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证 同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时 候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
4.日期及格式化
日期格式字符串
y :代表年
M :代表月
d: 代表日
E: 代表星期
H :代表24进制的小时
h :代表12进制的小时
m: 代表分钟
s :代表秒
S :代表毫秒
//获取一个日期对象
Date date = new Date();
System.out.println(date);
SimpleDateFormat类 格式化日期。
功能:格式化和解析日期
- 将Date类型的日期格式化成我们需要的日期类型 一般是 字符串类型
- 将字符串类的日期再转回来。
上边代码得到的date格式不是我们常用的格式,但是我们可以把它转化成我们常用的格式,
通过SimpleDateFormat类 中的 format(Date date) 将date型转换成特定格式的字符串。
也可以通过SimpleDateFormat类将一个字符串格式的日期,转换成Date类型。使用 parse(String str) 将字符串str转换成特定格式的date型 如下代码。
输出当前系统时间为汉语格式
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
System.out.println(d);
System.out.println(sdf.format(d));
jdk1.8之后的新增日期时间相关类
4.1DateTimeFormatter格式化日期类
方法:
ofPattern(“日期格式”);创建特定格式的格式化日期对象
Duraction类 表示:时间的区间,用来度量秒和纳秒之间的时间值 Period类 表示:一段时间的区间,用来度量年月日和几天之间的时间值
Duration.between();
Period.between();
总结
方法重载
包和访问修饰符
方法重载
static关键字
StringBuilder和StringBuffer
日期及格式化