面向对象
晚饭吃什么?模拟人类社会编程
吃饭–》若干动作–》C–》过程性语言(模拟计算机)
吃饭–》结果
找对象
找对象(object):对象是一个有一定职责的东西。
对象–》抽象概念(类)
object class
Car
类名
属性:有什么
方法:能干什么
main实现图纸(属性,方法)
设计一个“类”——要有属性(变量),方法(函数)
实现的载体–对象
set 改动
get 取出
this
Carx
力扣
415. 字符串相加
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger
), 也不能直接将输入的字符串转换为整数形式。
//可以补零,空位按零计算
BigDecimal
BigInterger
3110. 字符串的分数
给你一个字符串 s
。一个字符串的 分数 定义为相邻字符 ASCII 码差值绝对值的和。
请你返回 s
的 分数 。
class Solution {
public int scoreOfString(String s) {
char[] charArray = s.toCharArray(); // 将输入字符串转换为字符数组
int ans = 0;
for (int i = 1; i < charArray.length; i++) {
// 由于我们处理的是字符,需要将它们转换为整数(例如,通过它们的ASCII值)来进行计算
// 但在这里,我们假设字符都是数字字符,并且我们想要计算相邻字符之间的差的绝对值
// 因此,我们可以直接减去字符(这实际上会减去它们的ASCII值),因为ASCII值在'0'到'9'之间是连续的
ans += Math.abs(charArray[i] - charArray[i - 1]);
// 注意:这里的计算实际上给出的是ASCII值之差的绝对值,
// 如果输入字符串只包含数字字符,那么这相当于计算了相邻数字之间的差的绝对值。
// 如果字符串可能包含非数字字符,这个计算就没有意义了。
}
return ans;
}
}
构造器
对象的引用(reference)
类的设计
一定具有某种职责
类名
类名表示某种实物
Student drom sushe…
属性
类的特征,类具有什么?
存储数据,基本信息
方法
类的动作,能做什么?
Setter/Getter
属性加set,get方法
set给属性赋值
void setSpeed(double speed){
}
将结果变成字符串返回
//注释tostring后,打印
this
this代表当前对象
this.brand = “RSL”
==
面向对象中,两个引用指向 同一个 对象
基本数据类型中,比较的是数值。
equals
不重写的默认情况下,equals与==一样
构造器
结构上——类名();
类似类名和方法,又叫构造方法
主要目的:对象的初始化
- 引用类型String初始值:null
- 基本数据类型int(0);double(0.0)
?可以在初始对象时,给初始值吗
:用构造器
构造器初始值
无参构造器
写上给别人用
全参构造器(in order)
自定义构造器
电视选台
控制器;TV;测试类。
引用传递问题
new—指向了一个新的;
= — 连接指向
null–引用对象pc没有和任何对象绑定;Pc pc = null;
形参是一个拷贝,参数出现引用类型,只要出现了new
时间问题
常用类:
Date,SimpleDateFormat,Calendar()—辅助类(之前还学过Array,Random…)
如何获取系统时间——Data
package com.ffyc.Date;
import java.util.Date;
public class DataDemo {
public static void main(String[] args) throws InterruptedException {
// Date date = new Date();//先写好右边可以补全左边alt+回车
// System.out.println("当前时间:"+date);
// System.out.println("从1970年到现在的毫秒数:"+date.getTime());
// Thread.sleep(1000);
// Date date1 = new Date();
// System.out.println("从1970年到现在的毫秒数:"+date1.getTime());//从1970
// Thread.sleep(100);
// System.out.println("毫秒数:"+System.currentTimeMillis());
Date d = new Date();
long time = d.getTime()+1000*10;//10s后开启
while (true) {
Date date = new Date();
if (time==date.getTime()){
System.out.println("时间开启...");
break;
}
// System.out.println(d);
// Thread.sleep(1000);
}
}
}
时间日期格式转换——SimpleDateFormat
format()
Date—>String
parse()
解析:字符串解析为日期
String—>Data
日历类(Calendar)
package com.ffyc.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 输入一个年月日,计算出是周几 9.1
*/
public class CalendarDemo {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要计算的年月日(yyyy-MM-dd):");
String line = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(line);
Calendar instance = Calendar.getInstance(); //当前年月日
instance.setTime(date);
Calendar now = Calendar.getInstance(); //当前年月日
System.out.println(now.before(instance));
// instance.add(Calendar.DAY_OF_MONTH, 9);
// instance.add(Calendar.DAY_OF_MONTH,-10);
System.out.println("年: " + instance.get(Calendar.YEAR));
System.out.println("月: " + (instance.get(Calendar.MONTH) + 1));
System.out.println("今年第几天日: " + instance.get(Calendar.DAY_OF_YEAR));
System.out.println("日: " + instance.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + instance.get(Calendar.HOUR_OF_DAY));
System.out.println("周几:" + instance.get(Calendar.DAY_OF_WEEK));
}
}
继承
核心
辅助类
大数据的运算
方法
- +:add
- -:subtract
- *:multiply
- /:divide
eg:大数据的运算
package com.ffyc.number;
import org.omg.CosNaming.BindingIterator;
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
String a= "444444444555555555555";
String b="5555555555555555555555555555599999999999999999999911111111";
BigDecimal x = new BigDecimal(a);
BigDecimal y = new BigDecimal(b);
BigDecimal c = x.add(y);
System.out.println(c);
}
}