hpe实训课05(近期汇总版)

object类

1.Object类是所有类的的基类
2.常用方法
  * 	①.clone()方法:克隆对象
  * 	②.equals()方法:比较两个对象的地址是否相同
  * 	③.hashCode()方法:获取对象的哈希值
  * 	  hashCode的作用是获取哈希值,也称为散列码,实际返回的是一个int整数,这个hash值是确定该对象
  *     在哈希表中的索引位置,所有的类都包含这个hashCode()方法
3.hashCode()和equals()方法区别和联系
  * 	①.equals()方法比较的内存地址
  * 	②.hashCode()方法返回对象的内存地址处理后结构(数值)
  * 	③.比较对象的时候,一般先使用hashCode()去做比对,如果hashCode()不一样,则表示两个对象肯定不相等。
  * 	   如果hashCode()相同(因为hashCode相同的对象不一定是同一个对象),再去比较equals()
  * 	   如果equals()也相同,表示两个对象相同
  * 	④.如果重写了equals()方法一般也需要重写hashCode(),
  * 	    并且要保证equals()方法返回结果为true,hashCode()返回值也要相同,则代表两个对象相同
4.equals和==操作符区别
* 	①.equals方法存储在Object类中,所有的类都可以重写,Object类中equals()方法底层依赖的是==操作符
*   ②.Object类中equals()和==操作符 结果是一致的。 return(this == obj);
*   ③.String类中重写了equals()方法,比较的是字符串内容,而不是比较地址值

StringBuffer和StringBuilder类

1.线程(Thread)
* 线程:是程序中一个单一的执行路径或者控制流程。
* 多线程:在单个程序中同时运行多个线程完成不同的工作,称为多线程。
* eg:当用户发起一个请求,服务器收到请求后处理所有的业务逻辑返回的结果就是一个线程。
* 	  当客户端多个请求同时请求服务器,这就是多线程(并发)
2.共享资源
* 	 允许被不同的线程访问的资源
* 	 共享资源时多线程允许被不止一个线程访问的类变量或者实例变量。
3.锁
* 	 当多个线程共同使用共享资源时,就会出现资源争抢的情况,锁就是解决这种冲突的机制。
4.线程安全
*   一个资源在可以被多个线程中对象访问的时候,不会出现任何冲突,这种情况就是线程安全。
*   造成线程不安全的因素:存在多个线程同时修改一个共享资源。
5.如何避免线程不安全
* 	  ①.尽量使用局部变量
* 	  ②.尽量不做修改共享资源的操作
* 	  ③.对共享资源加锁
6. StringBuffer
* 	  ①.支持可变长度  
* 	  ②.可以修改字符串
* 	  ③.线程安全的
* 	  ④.效率低 
7.StringBuilder
* 	  ①.线程不安全
*     ②.效率高

回顾基本数据类型:int,short,boolean,dou ble,float,char

1.包装类:对基本数据类型做了封装,解决了基本数据类型的变量不能充当对象使用的问题。
2.拆箱和装箱(手动、自动)
* 	 装箱:基本数据类型--->对应包装类(int ---> Integer)
* 	 拆箱:包装类--->对应的基本数据类型(Integer ---> int)
3.拆箱和装箱总结
*   ①.包装类本质是一个对象,装箱时先在堆中new一个对象,再将基本数据类型的值赋给该对象的value
*   ②.一定不要使用 == 或者 != 在包装类型和基本数据类型之间进行比较,建议使用equals()
*   ③.当进行数学运算时,遇到包装类型会进行自动拆箱,再对基本数据类型进行运算。
4.基本数据类型和String类型转化
* 	 ①.基本数据类型 ---> String类型
* 	    1). +""
* 	    2). String.valueof(基本数据类型变量)
* 	 ②.String类型 ---> 基本数据类型
* 	        包装类.parseXXX("字符串")
* 	    eg:Integer.parseInt("字符串");
package com.hpe.example;
public class Demo7 {
	public static void main(String[] args) {
		int a = 30;
		// 手动装箱
		Integer i = new Integer(a);
		System.out.println(i);
		// 手动拆箱
		int x = i.intValue();
		System.out.println(x);
		
		// 自动装箱
		Integer i1 = a;
		System.out.println("自动装箱:"+ i1);
		// 自动拆箱
		int x1 = i1;
		System.out.println("自动拆箱:"+ x1);
		
		// 基本数据类型转换成String类型
		String str = a + "";
		String str1 = String.valueOf(a);
		System.out.println(str1);
		
		// String类型转换成基本数据类型
		String age = "35";
		int age1 = Integer.parseInt(age); // 只能将数字类型的字符串转换为整型
		System.out.println(age1);
		
		String str2 = "12.345";
		double b = Double.parseDouble(str2);
		System.out.println(b);
	}
}

日期类

1.Data
*       规则:yyyy-MM--dd  HH:mm:ss
*        yyyy/MM/dd
*        MM/dd
2.SimpleDateFormat
*       日期格式化,可以指定多种日期格式。
3.Calendar
package com.hpe.example;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Demo8 {
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(date);
		// 2020-02-17 17:01:50
		// 日期格式
		// 1.SimpleDateFormat
		// 定义规则
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		// 格式化的方法
		String myDate = sdf.format(date);
		System.out.println(myDate);
		// 2.DateFormat
		DateFormat d1 = DateFormat.getDateInstance();
		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);
		
		// Calendar
		Calendar calendar = Calendar.getInstance();
		// 指定日期
		// calendar.set(2019, 01, 23);
		// 获取年
		int year = calendar.get(calendar.YEAR);
		// 获取月0-11
		int mouth = calendar.get(calendar.MONTH)+1;
		System.out.println(year+"-"+mouth);
		// 获取日
		int day = calendar.get(calendar.DAY_OF_MONTH);
		// 获取时间
		int hour = calendar.get(calendar.HOUR_OF_DAY);
		// 获取分
		int minute = calendar.get(calendar.MINUTE);
		// 获取秒
		int  second = calendar.get(calendar.SECOND);
		System.out.println(year+"-"+mouth+"-"+day+" "+hour+"-"+minute+"-"+second);
		
	}
}

生成随机数

1.Math类
* 	 random():生成随机数 0.0-1.0之间(左闭右开)
2.Random类:
* 	 nextInt():生成随机数
package com.hpe.example;

import java.util.Arrays;
import java.util.Random;

public class Demo9 {
	public static void main(String[] args) {
		// 1.使用Math中的random()方法
		double d= Math.random();
		System.out.println(d);
		// 生成1-36之间的随机数
		int a = (int)(Math.random()*36)+1;
		System.out.println(a);
		// 2.使用Random类中的nextInt()方法
		// 取值范围[):左闭右开
		Random random = new Random();
		int num = random.nextInt(5);
		System.out.println(num);
		
		/*
		 * 实现36选7  双色球
		 * 1.使用数组
		 * 2.不能重复
		 */
		int[] arr = new int[7];
		// 用来表示生成有效数字的个数,表示数组的下标
		int count = 0;
		// 生成随机数
		int temp = 0;
		while (count < arr.length) {
			// 获取随机数
			temp = (int)(Math.random()*36)+1;
			// 随机数和有效数组是否相等的标记 存在相等为1 不存在为0
			int bj = 0;
			// 判断随机数是否和有效数字相等
			for (int i = 0; i < count; i++) {
				if (temp == arr[i]) {
					// 发现有重复数字
					bj = 1;
					break;
				}		
			}
			if(bj == 0) {
				arr[count] = temp;
				count++;
			}
		}
		// 打印数组
		/*
		 * for (int i : arr) {
				System.out.println(i);
			}
		*/
		System.out.println(Arrays.toString(arr));
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值