当前位置: 首页 > news >正文

0402-对象和类(访问器 更改器 日期类)

OOP:面向对象程序设计

类:构造对象的模板或蓝图

类构造对象的过程称为创建类的实例 

封装:对外隐藏数据的真实实现方式,提供简单的方法 (类比方向盘)

对象:本质上是内存中的一小块空间

识别类:不同的类有不同的特征

预定义类:Java提供的各类方法

构造器(构造方法):new的时候调用的那个方法;与类名完全一致

Date类:

new Date()

LocalDate类:

LocalDate.now() 创建新对象

LocalDate.of(1999,12,31) 指定创建特定日期

getYear() getMonthValue() getDayOfMonth()

更改器(能够做修改)与访问器(访问数据):

package 第四章对象和类;

import java.time.LocalDate;
import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
//		LocalDate.now();
//		LocalDate newYear=LocalDate.of(2004, 3, 6);
//		System.out.println(newYear);
//		int year=newYear.getYear();
//		System.out.println(year);
//		int month=newYear.getMonthValue();
//		System.out.println(month);
//		int day=newYear.getDayOfMonth();
//		System.out.println(day);
		
		Person xx=new Person();
//		xx.flag1=10;
//		System.out.println(xx.flag1);
//		//xx.flag2??
//		xx.setFlag2(30);
		
		System.out.println(Arrays.toString(xx.getFlag3()));
		int[] arr=xx.getFlag3();
		arr[0]=111;
		arr[1]=222;
		System.out.println(Arrays.toString(xx.getFlag3()));//,flag3没有提供更改器,但会将flag3更改
		
//		
		
	}
}
package 第四章对象和类;

public class Person {
//	public int flag1;//所有的类都可以访问到
//	private int flag2=130184;//只能在当前的类访问
	//想要访问private可以通过访问器
		//访问器
//		public int getFlag2() {
//			return flag2;
//		}
		//更改器 能够修改
//		public void setFlag2(int flag2) {
//			//当前对象
//			this.flag2=flag2;
//		}
	private int[] flag3= {1,2,3,4};
	//引用类型默认的访问器和更改器不安全:会暴露地址
	public int[] getFlag3() {
		//默认访问器:浅拷贝
//		return flag3;
		
		//安全写法:深拷贝
		int[] temp=new int[flag3.length];
		for(int i=0;i<flag3.length;i++) {
			temp[i]=flag3[i];
		}
		return temp;
	}
	
	private String flag4="hello";
	//安全:因为字符串不可变,即使暴露了也没关系
	public String getFlag4() {
		return flag4;
	}
	
	
}

LocalDate类:日历 

package 第四章对象和类;

import java.time.DayOfWeek;
import java.time.LocalDate;

public class CalendarTest {
	public static void main(String[] args) {
		//打印当前月份的日历
		// 获取当前日期
		LocalDate date=LocalDate.now();
		// 获取当前月份
		int month=date.getMonthValue();
		// 获取今天是几号
		int today=date.getDayOfMonth();
		// 将日期设置为当月第一天(减去今天的天数-1)
		date=date.minusDays(today-1);
		// 获取当月第一天是星期几
		DayOfWeek weekday=date.getDayOfWeek();
		// 获取星期几对应的数值(1=星期一,...,7=星期日)
		int value=weekday.getValue();
		System.out.println("Mon Tue Wed Thu Fri Sat Sun");
		for(int i=1;i<value;i++)
			System.out.println("   ");
		// 循环打印当月所有日期
		while(date.getMonthValue()==month) {
			// 打印日期(右对齐,占3位)
			System.out.printf("%3d",date.getDayOfMonth());
			// 如果是今天,在日期后加*标记
			if(date.getDayOfMonth()==today)
				System.out.print("*");
			else
				System.out.print(" ");
			// 日期加1天
			date=date.plusDays(1);
			// 如果是周日,换行
			if(date.getDayOfWeek().getValue()==1)
				System.out.println();
		}
		 // 如果最后一天不是周日,换行
		if(date.getDayOfWeek().getValue()!=1)
			System.out.println();
	}
}

 

http://www.dtcms.com/a/107453.html

相关文章:

  • 北方算网获邀在中关村论坛发言 解析人工智能+产业落地核心路径
  • 【数据库原理及安全实验】实验一 数据库安装与创建
  • openEuler24.03 LTS下安装HBase集群
  • YOLO学习笔记 | 基于YOLOv5的车辆行人重识别算法研究(附matlab代码)
  • Ubuntu 22.04 安装和运行 EDK2 超详细教程
  • 门控循环单元(GRU)基础学习与实例:电影评论情感分类
  • 微信小程序开发-01.介绍
  • Java 基础-29-final关键字-详解
  • 当网页受到DDOS网络攻击有哪些应对方法?
  • 【mysql 的安装及使用】
  • SuperMap GIS基础产品FAQ集锦(20250402)
  • 02_使用Docker在服务器上部署Jekins实现项目的自动化部署
  • Docker Registry 清理镜像最佳实践
  • 06-21-自考数据结构(20331)- 查找技术-动态查找例题分析
  • 02-Docker 使用
  • libevent 核心数据结构
  • AI 数字人短视频数字人源码部署揭秘:开启虚拟内容创作新纪元​
  • 工作后考研
  • 为什么在Transformer模型处理的输入维度会因为图像分辨率大小的不同而导致patch数量的变化,但是不需要修改模型的维度参数?
  • C语言数组知识点
  • 【C语言】深入理解指针(四):回调函数与qsort函数的奥秘
  • Mysql MIC高可用集群搭建
  • python的一些使用姿势
  • 【HTML】分享一个自己写的3*3拼图小游戏
  • Go语言从零构建SQL数据库(4)-解析器
  • 人工智能之数学基础:矩阵分解之LU分解
  • Stable Diffusion win10 Cpu安装日志
  • 国产三维CAD「皇冠CAD」在汽车零部件领域建模教程:刹车片
  • React-Diffing算法和key的作用
  • 【AI论文】什么、如何、何处以及效果如何?大语言模型测试时缩放技术调研