Java学习_Day12

java基础2

Java学习第12天内容:
一、Object类
二、Date类
三、SimpleDateFormat类
四、Calendar类
五、System类
六、StringBuilder类
七、包装类

一、Object类
Object类是所有类的父类,任何子类都可以使用Object类中的方法。

public String toString()
把一个对象转换为字符串(默认格式:全类名+"@"+地址值)

	【建议子类重写此方法,做自己的实现,返回属性值】
	快捷键:alt+inert-->toString

Object类的toString()方法打印的时对象的地址值,意义不大
所以建议子类复写此方法
public boolean equals(Object obj)

	比较两个对象的地址值是否相等(底层是==进行比较)
	==比较的是地址值
	【建议子类重写此方法,做自己的实现,按照属性值进行比较】
	快捷键:alt+inert-->equals And hashCode

Object类的equals方法默认比较两个对象的地址值,意义不大
所以要重写equals方法

二、Date类
Date用来表示日期和时间(精确到毫秒值)
构造方法:
无参构造方法:
以当前时间来创建Date对象
public Date()
如:

Date date=new Date();//创建一个Date对象,表示当前时间

有参构造方法:
以指定的毫米值来创建Date对象
public Date(long date)
在这里插入图片描述
如:

//创建一个Date对象,表示指定某个毫秒值的时间
Date date1=new Date(1000*60*60*24); //距离1970年1月1日0时0分0秒 ,往后的1天时间

成员方法
设置Date对象的毫秒值:
public void setTime(long time)
如:

//修改date对象的时间为 1970年1月1日1时0分0秒
date.setTime(1000L*60*60);

获取Date对象的毫秒值:
public long getTime()
如:

//获取date对象的毫秒值
long time=date.getTime();

代码示例:

//创建的当前时间的Date对象
Date date1=new Date();
System.out.println(date1);

//指定毫秒值,创建Date对象
Date date2=new Date(1000L*60*60*24*365*2);
System.out.println(date2);

  System.out.println("----------------");
  //获取date1对象的毫秒值
  long time1 = date1.getTime();
  System.out.println(time1); //1554521496490
  //获取date2对象的秒值
  long time2 = date2.getTime();
  System.out.println(time2);//63072000000
  System.out.println("-----------------");
  //修改date2对象的毫秒值
  date2.setTime(1000);
  System.out.println(date2);
  //获取date2对象修改后的毫秒值
  long time3 = date2.getTime();
  System.out.println(time3); //s1000

在这里插入图片描述在这里插入图片描述

三、SimpleDateFormat类
用来对日期进行【格式化】和【解析】
格式化(format):Date对象–>String
解析(parse): String–>Date对象

常用的模式
	y	年
	M	月
	d	月中的日
	D	年中的日
	H	小时(0~23)
	m	分钟(0~59)
	s	秒(0~59)
	S	毫秒(0~999)
创建SimpleDateFormat对象的时候,需要指定模式(如:yyyy-MM-dd HH:mm:ss)		

案例代码:

//1.创建SimpleDateFormat对象,需要指定模式 yyyy-MM-dd HH:mm:ss
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

        //2. 格式化 : Date-->String
        Date date=new Date();
        String str = sdf.format(date);
        System.out.println(str);

        //3. 解析: String-->Date
        String str1="2008-08-08";
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf1.parse(str1);  //alt+enter --> add exception ...
        System.out.println(date1);	

练习:键盘录入一个生日(yyyy-MM-dd),计算这个人活了多少天?

/*
		步骤
		1)键盘录入一个生日(yyyy-MM-dd),采用Scanner键盘录入
		2)把生日的字符串,通过SimpleDateFormat解析成Date对象
		3)获取生日那天的毫秒值
		4)获取当前当前时间的毫秒值
		5)计算中的时间差,转换为为天
		*/
		//键盘录入一个生日(yyyy-MM-dd),采用Scanner键盘录入
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的生日(yyyy-MM-dd):");
        String birthday = sc.next();
        //把生日的字符串,通过SimpleDateFormat解析成Date对象
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(birthday); //alt+enter
        //获取生日那天的毫秒值
        long birthday_time = date.getTime();
        //获取当前时间的毫米值
        long current_time = System.currentTimeMillis();
        //计算中的时间差,转换为为天
        long time=(current_time-birthday_time)/1000/60/60/24;
        System.out.println(time);  

四、Calendar类
表示日历类,可以对日历的字段(年、月、日…)进行操作.
注意:Calendar是一个抽象类,不能够直接创建对象。API提供了一个方法,getInstance() 获取一个Calendar子类对象。

	 //获取Calendar对象
	Calendar c=Calendar.getInstance();
	
	常见的日历字段
		Calendar.YEAR	年
		Calendar.MONTH	月
		Calendar.DAY_OF_MONTH 	月中的日
		Calendar.DAY_OF_YEAR	年中的日
		Calendar.DAY_OF_WEEK	星期几
	
	Calendar常用方法
		public int get(int field)
			获取日历字段的值
		public void set(int field,int value)
			设置日历字段的值
		public void add(int field,int value)
			计算日历字段的值

案例代码:

		//获取的对象,本质上Calendar的子类对象。表示的时间为当前时间
        Calendar c = Calendar.getInstance();
        //设置 2008年-8月-8日(分别设置年、月、日)
        //c.set(Calendar.YEAR,2008);
        //c.set(Calendar.MONTH,7);
        //c.set(Calendar.DAY_OF_MONTH,8);
        //设置 2008年-8月-8日(一起设置年、月、日)
        c.set(2008,7,8); 
		
        //把时间进行计算(正数:往后,负数:往前)
        c.add(Calendar.DAY_OF_MONTH,2);
		
        //获取年
        int year=c.get(Calendar.YEAR);
        //获取月
        int month = c.get(Calendar.MONTH)+1; //月份是从0开始的(表示1月)
        //获取月中的日
        int day_of_month = c.get(Calendar.DAY_OF_MONTH);
        System.out.println("月中的天:"+day_of_month);
        //获取年中的天
        int day_of_year = c.get(Calendar.DAY_OF_YEAR);
        System.out.println("年中的天:"+day_of_year);
        //获取星期几
        //星期是按照下面的顺序排列
        //SUNDAY(1)    MONDAY(2)  TUESDAY(3)  WEDNESDAY(4)     THURSDAY(5)     FRIDAY(6)  SATURDAY(7)
        //星期日(1)    星期一(2)  星期二(3)   星期三(4)         星期四(5)        星期五(6)  星期六(7)
        int index = c.get(Calendar.DAY_OF_WEEK);
        String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        System.out.println(weeks[index]);
        //拼接字符串
        System.out.println(year+"年"+month+"月"+day_of_month+"日"+"  是一年中的"+day_of_year+"天"+",这一天是"+weeks[index]);

五、System类

    public long currentTimeMillis()
	获取当前系统时间的毫秒值
	
	public void arraycopy(Object src,int srcPos,Object  dest,int destPos,int length)
		把源数组中的元素复制到目标数据中
		参数:
			src - 源数组。
			srcPos - 源数组中的起始位置。
			dest - 目标数组。
			destPos - 目标数据中的起始位置。
			length - 要复制的数组元素的数量。

代码示例:

//获取当前系统的毫秒值
	long time=System.currentTimeMillis(); 
	
	int[] arrayA={1,2,3,4,5};
	int[] arrayB=new int[5];
	//把arrayA中的元素全都复制到arrayB中
	System.arraycopy(arrayA,0,arrayB,0,5);

六、StringBuilder类
在这里插入图片描述
字符串缓冲区,其实就是一个容器(底层是数组)
所有的容器底层都是靠数组实现的
StringBudilder特有的方法append()

public void append(String str)
	往缓冲区中添加任何类型的数据,都会变成字符串
	注意:返回字符串缓冲区本身

public String toString()
	把字符串缓冲区转换为字符串

小扩展:StringBuffer有和StringBuilder完全兼容的API
区别:
	StringBuiler: 线程不安全(不同步)、效率高
	StringBuffer: 线程安全(同步)、效率低

代码示例:

//创建字符串缓冲区的对象(容器)
	StringBuiler sb=new StringBuiler();
	//追加到缓冲区末尾
	sb.append("hello");
	sb.append(3.14);
	sb.append(true);
	sb.append(new Student()); //如Student没有复写toString。添加的就是地址
	
	//把字符串缓冲区中的内容,单独拿出来转换为字符串
	String str=sb.toString(); 
	System.out.println(str); //hello3.14truecom.itheima01.Student@af4768c

【只有变量字符串相加才会产生新的字符串
而常量字符串相加是不会产生的字符串的,因为常量在被编译时编译器有优化】

七、包装类
每一个基本类型都有一个包装类与之对应

  基本类型			   包装类(引用类型)
	byte				Byte
	short				Short
	int					Integer
	long				Long
	float				Float
	double				Double	
	char				Character
	boolean				Boolean

自动装箱和自动拆箱
1)自动装箱: 基本类型–>包装类
Integer x=10; //自动装箱:10自动转换为Integer类型
2)自动拆箱:包装类–>基本类型
int y=x+1; //自动拆箱:x本类是Integer类型,拆箱变为int类型,再和1做加法运行

基本使用
1)获取最大值和最小值

System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

2)字符串和其他类型相互转换
a: 其他类型转换为字符串
1)任何数据+""做拼接,都会变成字符串
2)String.valueOf(xxx),可以把任何数据xxx转换为String类型

b: 把字符串转换为其他类型
口诀:要转换为什么类型,就找什么类型的包装类,parseXxx方法

String s1="1000";
//把"1000"转换为int
int a = Integer.parseInt(s1);
System.out.println(a*10);

String s2="3.14";
//把"3.14"转换为3.14
double b = Double.parseDouble(s2);
System.out.println(b);

String s3="true";
//把"true"转换为true
boolean c = Boolean.parseBoolean(s3);
System.out.println(c);
		
代码示例:
  1. 字符串转其他类型

        //把"12345"转化为12335
     	int a=Integer.parseInt("12345");
     	//把"12.345"转化为12.345 float类型
     	float b=Float.parseFloat("12.345");
     	//把"12.345"转化为12.345 double类型
     	double c=Double.parseDouble("12.345");
     	//把"true"转化为true
     	boolean d=Boolean.parseBoolean("true");
    
    1. 其他类型转字符串

       //把12345转换为"12345"
       String s1=String.valueOf(12345);
       //把123.345转换为"12.345"
       String s2=String.valueOf(12.345);
       //把true转换为"true"
       String s3=String.value(true);
       //Object对象转换为String。底层其实调用了对象的toString方法并返回
       String s4=String.valueOf(new Object());
      

【注意】
带s的类都是工具类
父类 对象名 = new 子类();
对象名.子类方法();
编译看左边,运行看右边
即在编译时(.java文件),先看父类中有没有这个方法,如果没有idea就报错
程序执行时(.calss文件),才会去调用子类的方法
null与isEmpty的区别
isEmpty是指集合对象存在但没有存放数据
null是指对象不存在

Java学习第13天内容链接:
https://blog.csdn.net/LJN951118/article/details/89093471

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark 基础环境是指安装和配置 Spark 所需的软件和硬件环境。Spark 运行需要 Java 环境和 Hadoop 环境,同时也需要配置 Spark 的相关参数,如内存大小、CPU 核数等。在安装和配置好基础环境后,我们才能使用 Spark 进行数据处理和分析。 ### 回答2: Spark是一个快速、可扩展且容错的大数据处理框架,提供了丰富的API和工具,可以处理大规模的数据集。 搭建Spark基础环境包括以下几个步骤: 1. 安装Java:Spark是基于Java开发的,因此首先需要安装Java开发环境。可以从Oracle官网下载并安装适合操作系统的Java版本。 2. 下载Spark:在Apache Spark官网下载最新版本的Spark压缩包,并解压到指定目录。 3. 配置环境变量:将Spark的bin目录添加到系统的环境变量。这样可以方便地在任意位置运行Spark的命令。 4. 配置Spark集群:如果需要在多台机器上运行Spark应用程序,需要进行集群配置。首先,在每台机器上安装好Java,并将Spark解压到相同的目录。然后,编辑Spark的配置文件,设置集群的主节点和从节点。 5. 验证安装:通过在终端运行spark-shell命令,验证Spark是否正确安装。spark-shell命令会启动一个Scala解释器,并连接到Spark集群。 6. 运行第一个Spark应用程序:编写一个简单的Spark应用程序,如WordCount,用于统计文本文件单词的个数。将程序保存为Scala文件,并使用spark-submit命令来运行。 以上就是搭建Spark基础环境的主要步骤。搭建好Spark环境后,可以使用Spark提供的丰富API和工具来进行大数据处理和分析,如数据清洗、转换、机器学习等。Spark的功能强大且易于使用,适用于各种大规模数据处理场景。 ### 回答3: Spark是一个快速通用的集群计算系统,它提供了高效的数据处理和分析能力。要运行Spark,我们需要配置和搭建一些基础环境。 首先,我们需要安装Java JDK。Spark运行在Java虚拟机上,因此我们需要安装适当版本的Java开发工具包。通常建议使用Oracle JDK的最新稳定版本,然后设置JAVA_HOME环境变量。 其次,我们需要安装Spark本身。Spark官方网站提供了预编译的二进制发行版,我们可以从网站上下载并解压缩到我们喜欢的位置。然后,我们可以设置SPARK_HOME环境变量,以便在终端窗口使用Spark命令。 接下来,我们需要选择一个合适的集群管理器来运行Spark应用程序,比如Standalone模式、Hadoop YARN和Apache Mesos等。我们需要根据自己的需求进行选择和配置。例如,在Standalone模式下,我们需要启动一个Spark Master和多个Spark Worker来管理和运行任务。 最后,在运行Spark应用程序之前,我们需要通过编写一个Spark应用程序来使用Spark的功能。Spark提供了Java、Scala和Python等多种编程语言的API。我们可以使用任何一种编程语言来编写应用程序并在Spark上运行。 总之,Spark基础环境搭建包括安装Java JDK、安装Spark本身、选择和配置集群管理器,以及编写Spark应用程序。搭建好这些基础环境后,我们就可以开始使用Spark进行快速、高效的集群计算了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值