常用类
类
1.语法
-
访问修饰符 class 类名{}
2.类的组成
-
①.属性(成员属性或者成员变量)
语法:访问修饰符 数据类型 属性名称 public String name;
分类:
成员变量:存储在堆中
局部变量:存储在栈中
类变量:随着类的加载而加载,存储在方法区 static int age;
常量:存在方法区的常量池中 static final String country = “CHINA”
②.方法
③.构造器
3.访问修饰符
-
① public:公开的 在任何位置都可以访问
② private:私有的 只有在当前类中可以访问
③ protected:受保护的 在同一个包中访问 或者在派生类中可以访问
④ default:默认的 缺省的 在同一个包中可以访问
4.成员方法
-
访问修饰符 返回类型 方法名(形式参数列表){
//方法主体
}
5.构造器
-
①.通过构造器构建对象
②.通过构造器可以初始化成员属性(给成员变量赋值)
③.可以重载
6.创建对象
-
语法:
new 构造器;
eg: Person person = new Person();
流程:
当通过new 构造器之后,会在堆空间开辟一段内存,来保存这个实例,会产生一个引用地址,将来可以将引用地址交给在栈空间中声明的变量。
7.局部变量和成员变量区别
-
①.作用域不同
成员变量是在类中声明
局部变量是在方法内(方法体内或形参列表)
②.存储位置不同
成员变量存储在堆中
局部变量存储在栈中
③.初始值或赋值不同
成员变量都有默认值(引用数据的初始值都为null)
局部变量没有默认值,只有显示的赋值才能访问
8.static关键字
-
static 修饰成员变量
①.static修饰成员变量是一个类变量
②.它随着类的加载而产生,无论将来创建多少个对象,类变量只保留一份
③.访问静态属性通过 类名.属性名 来访问
④.所有对象都可以共享静态的成员属性
⑤.存储位置:存在方法区中
static 修饰的成员方法
①.static修饰的成员方法是一个类方法
②.访问静态的方法:类名.方法名
③.在静态方法内只能通过类名访问静态成员(如果想要访问非静态成员,只能通过实例化的对象访问)
④.一般工具类中的方法都会声明成静态方法
static 代码块
①.静态代码块 static{}
②.随着类的加载而加载,只会执行一次
9.Java默认值
-
若基本数据类型作为类成员的时候,即使没有进行初始化。java也会给定默认的初始值。默认值如下图所示:
Object类
1.Object类
-
所有类的基类
2.常用方法
-
①.clone()方法 :克隆对象
②.equals()方法:比较两个对象的地址是否相同
③.hashCode()方法:获取对象的哈希值
hashCode的作用是获取哈希值,也称为散列码,实际返回的是一个int整数,这个hash值是确定该对象在哈希表中的索引位置,所有的类都包含这个hashCode()方法。
④.toString()方法:返回的是全类名+引用地址
java.lang.Object@15db9742:类的完整包路径@引用地址
3.hashCode()和equals()方法区别和联系
-
①.equals()方法比较的是内存地址
②.hashCode()方法返回对象的内存地址处理后结构(数值)
③.比较对象的时候,一般先使用hashcode()去做对比
如果hashCode()不相同,则表示两个对象肯定不相同
如果hashCode相同(因为hashcode相同的对象不一定是同一个对象),再去比较equals()
如果equals()也相同,表示两个对象相同
④.如果重写了equals()方法一般也需要重写hashCode()并且要保证equals()方法返回结果为true,hashCode()返回值也要相同,则代表两个对象相同。
4.equals和 == 操作符
-
①.equals方法存储在Object类中,所有的类都可以重写,Object类中equals()方法底层依赖的是 == 操作符,Object类中equals()和 == 操作符 结果是一致的。
equals()方法的返回值是return (this == obj);
②.String类中重写了equals()方法,比较的是字符串内容,而不是比较地址值。
String类
1.String类
-
字符串处理类,它是引用类型
2.常用方法
-
String string = "song";
char[] ch = string.toCharArray();
for (char c : ch) {
System.out.println(c);
}
String str = "abcdf";
String str1 = str.replace("f", "e");
System.out.println(str1);
String scString ="shfjkasdh";
boolean b1 = scString.contains("hfj");
System.out.println(b1);
String str2 = "cba";
String Str3 = "cbc";
System.out.println(str2.compareTo(Str3));
String str4 = "wuhanjiayou";
int indexOf = str4.indexOf('a');
System.out.println(indexOf);
int indexOf2 = str4.indexOf("a");
System.out.println(indexOf2);
String str5 = "huiyujinigjidi";
System.out.println(str5.lastIndexOf('i'));
System.out.println(str5.substring(5));
System.out.println(str5.substring(0,5));
System.out.println(str5.length());
String str6 = "lisa-jennie-beakhyun-lee";
String[] split = str6.split("-");
for (String string2 : split) {
System.out.println(string2);
}
String str7 = " a bc ";
System.out.println("-"+str7.trim()+"-");
System.out.println(str7.replaceAll(" ",""));
String stri1 = new String(new char[]{'a','b'});
System.out.println(stri1);
String stri2 = new String("wc");
System.out.println(stri2);
StringBuffer类和StringBuilder类
1.StringBuffer
-
① 支持可变长度
② 可以修改字符串
③ 线程安全的
④ 效率低
2.StringBuilder
-
① 线程不安全的
② 效率高
③支持可变长度
包装类
1.包装类:
-
对基本数据类型做了封装,解决了基本数据类型的变量不能充当对象使用的问题。
eg:int—>Integer double—>Double
2.拆箱和装箱(手动、自动)
-
装箱:基本数据类型—>对应包装类 (int -->Integer)
拆箱:包装类—>对应的基本数据类型 (Integer–>int )
3.拆箱和装箱总结
-
①.包装类本质是一个对象,装箱时先在堆中new一个对象,再将基本类型的值赋给该对象的value
②.一定不要使用== 或者 != 在包装类型和基本数据类型之间进行比较,建议使用equals()
③.当进行数学运算时,遇到包装类型会进行自动拆箱,再对基本数据类型进行运算。
4.基本数据类型和String类型转化
-
①.基本数据类型—>String类型
1).+""
2).String.valueof(基本数据类型变量)
②.String类型转化成基本数据类型
包装类.parseXXX(“字符串”)
eg:Integer.parseInt(“字符串”);
日期类
1.Date
-
规则:
yyyy-MM-dd HH:mm:ss
yyyy/MM/dd
MM/dd
Date date = new Date();
System.out.println(date);
2.SimpleDateFormat
-
日期格式化,可以指定多种日期格式
SimpleDateFormat smt = new SimpleDateFormat("MM/dd hh:mm:ss");
String mydate = smt.format(date);
System.out.println(mydate);
DateFormat d1 = DateFormat.getDateInstance();
String s1 = d1.format(date);
System.out.println(s1);
DateFormat d2 = DateFormat.getTimeInstance();
String s2 = d2.format(date);
System.out.println(s2);
3.Calendar
-
获取日期信息
Calendar calendar = Calendar.getInstance();
int year = calendar.get(calendar.YEAR);
int month = calendar.get(calendar.MONTH+1);
int day= calendar.get(calendar.DAY_OF_MONTH);
int hour = calendar.get(calendar.HOUR);
int min = calendar.get(calendar.MINUTE);
int second = calendar.get(calendar.SECOND);
int dayofweek = calendar.get(calendar.DAY_OF_WEEK);
Math类
random()
-
生成随机数,数字区间 [0.0,1.0)
eg:生成min-max之间的随机数
Math.random()*(max-min+1)+min
Random类
nextInt()
-
生成随机数,左闭右开 [)
eg:生成min-max之间的随机数
Random.nextInt(max-min+1)+min