Java基础学习笔记 (七) —— 常用类

常用类
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.常用方法
在这里插入图片描述
//1.toCharArray()方法,可以将字符串转化为一个字符数组
String string  = "song";
char[] ch = string.toCharArray();
for (char c : ch) {
	System.out.println(c);
}

//2.replace()替换
String str  = "abcdf";
//将f替换成e
String str1 = str.replace("f", "e");
System.out.println(str1);

//3.contains():判断字符串中是否包含指定的字符串
String scString ="shfjkasdh";
boolean b1 = scString.contains("hfj");
System.out.println(b1);

//4.compareTo():按照字典序进行比较(ASCII码 按照字典顺序比较)
String str2 = "cba";
String Str3 = "cbc";
System.out.println(str2.compareTo(Str3));

//5.indexof():返回字符串第一次出现的位置
String str4 = "wuhanjiayou";
int indexOf = str4.indexOf('a');
System.out.println(indexOf);
int indexOf2 = str4.indexOf("a");
System.out.println(indexOf2);

//6.lastIndexof():返回字符串最后一次出现的索引位置
String str5 = "huiyujinigjidi";
System.out.println(str5.lastIndexOf('i'));

//7.subString():截取字符串
//索引位置5开始截取字符串一直截取到最后(左闭右闭)
System.out.println(str5.substring(5));
//指定索引范围[0,5):左闭右开
System.out.println(str5.substring(0,5));

//8.length():返回字符串长度
System.out.println(str5.length());
		
//9.split():根据分割的字符串转化为数组
String str6 = "lisa-jennie-beakhyun-lee";
String[] split = str6.split("-");
for (String string2 : split) {
	System.out.println(string2);
}

//10.trim() 去除字符串前后的空格,中间管不了
String str7 = " a bc ";
System.out.println("-"+str7.trim()+"-");

// 11.replaceall() 替换所有的字符
System.out.println(str7.replaceAll(" ",""));

String stri1 = new String(new char[]{'a','b'});
System.out.println(stri1);
String stri2 = new String("wc");//内存里创建两个空间 new结构空间,常量池空间
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 date = new Date();
System.out.println(date);
//2020-02-17 10:07:38
2.SimpleDateFormat
日期格式化,可以指定多种日期格式
//定义规则
//日期格式化方法
//1.SimpleDateFormat
SimpleDateFormat smt = new SimpleDateFormat("MM/dd hh:mm:ss");

//格式化的方法
String mydate = smt.format(date);
System.out.println(mydate);

//2.dateformat 抽象类
DateFormat d1 = DateFormat.getDateInstance();//实例化方法

//yyyy-MM-dd
String s1 = d1.format(date);
System.out.println(s1);

//HH:mm:ss
DateFormat d2 = DateFormat.getTimeInstance();
String s2 = d2.format(date);
System.out.println(s2);

3.Calendar
获取日期信息
//calendar
Calendar calendar = Calendar.getInstance();
//获取年份
int year = calendar.get(calendar.YEAR);
//获取月份0-11
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
发布了8 篇原创文章 · 获赞 6 · 访问量 2452

猜你喜欢

转载自blog.csdn.net/sxn712/article/details/105151147