Java入门
Java导入包
- import 主要用于导入在使用类前准备好了
- Import 关键字可以多次使用,导入多个包
- Import 关键字可以多次使用,导入多个类
- 如果同一个包中需要大量的类,那么可以使用通配符进行导入
- 如果Import了不同包,相同名称的类,那么还是需要在使用时增加包名。
import java.util.Date;
import java.sql.*;public class Main {public static void main(String[] args) {java.lang.String name = "测试";System.out.println(name);// 输出字符串// TODO 系统的中的 Date类Date date = new Date();System.out.println(date);// 输出日期-Sun Sep 03 22:32:40 GMT+08:00 2023// TODO 如果使用 sql 中也有Date需要写全java.sql.Date sqlDate=new java.sql.Date(12012);System.out.println(sqlDate);}
}
继承与构造方法
使用extends
关键字可以继承父类
如果要获取父类的方法或名称使用super
关键字
如果父类中有构造方法,在子类中需要对其实现,否则报错
构造方法与C#
类似,方法名等于类名
public class _02_构造方法 {public static void main(String[] args) {Child2 c1 = new Child2();Child2 c2 = new Child2();Child2 c3 = new Child2();}
}class Parent2 {String username = "父类";Parent2(String name) {username = name;System.out.println("父类。。。。");}
}// 实现父类的构造函数
class Child2 extends Parent2 {Child2() {super("新的子类名");System.out.println("子类。。。");}
}
方法重载
一个类中,不能重复声明相同方法,也不能声明相同属性
在这里相同的方法指的是方法名,参数列表相同和返回类型无关
如果方法名相同,但是参数列表(个数,顺序,类型)不相同,会认为是不同的方法,只不过是名称一样
这个操作在Java和C#中被称为方法重载
构造方法也存在方法的重载,重载需要传入的参数不一致
/* 方法的重载* 方法名相同-参数参数不同* */
class User {void login(String account, String password) {System.out.println("正好,密码登录");}void login(int tel) {System.out.println("手机验证码登录");}void login(String wx) {System.out.println("微信登录");}
}
方法重载-this
如果方法参数较多,可以重复调用类中方法
判断那个函数被调用,可以看名字颜色,如果是高亮状态表示被调用
class User1 {User1() {this("名字");}User1(String name) {this(name, "男");}User1(String name, String sex) {System.out.println(name + sex);}
}
方法重载-顺序
- 如果传入参数是byte类型
- 会自动选择到byte类型的方法中
- 如果没有byte会转入到short类型中
- 如果没有short会转入到int,原因是转换成byte无法转换成char
- byte==>8
- short==>16
- char==>16
- int==>32
public class _05_方法重载_顺序 {public static void main(String[] args) {byte b = 10;User2 user2 = new User2(b);}
}class User2 {User2(byte a) {System.out.println("bbb");}User2(short a) {System.out.println("sss");}User2(char a) {System.out.println("ccc");}User2(int a) {System.out.println("iii");}
}
方法重载-多态
- 多态其实就是约束了对象的使用场景
- 方法重载,方法名相同,多数列表不同(个数、顺序、类型)
- 如果转换类型没找到会找父类,如BBB的父类是AAA
- AAA的父类是object,如果object中也没有这个类型则会报错
public class _06_方法重载_多态 {public static void main(String[] args) {AAA aaa1 = new AAA();test(aaa1);// aaaAAA aaa2 = new BBB();test(aaa2);// aaa}static void test(AAA aaa) {System.out.println("aaa");}static void test(BBB bbb) {System.out.println("bbb");}
}class AAA {
}class BBB extends AAA {
}
方法的重写
- 方法的重写:父类对象的方法其实主要体现通用性,无法在特殊场合下使用
- 如果子类对象需要在特殊场合下使用,那么就需要重写方法逻辑,这个操作在Java中称之为方法的重写
- 这里的重写并不意味着方法被覆盖,只是在当前场合不使用,如果使用
super
关键字还可以继续访问父类中的方法 - 方法的重写要求,子类的方法,方法名相同,返回类型相同,参数列表相同
public class _07_方法重写 {public static void main(String[] args) {Children children = new Children();children.test();}
}class Parent3 {String name = "父类";void test() {System.out.println("父类中....");}
}class Children extends Parent3 {String name = "子类";// 方法的重写void test() {// 也可以调用父类中的方法super.test();System.out.println("子类中....");}
}
小练习
- 一个对象使用什么方法,取决于子引用变量类型
- 一个对象使用什么属性,取决于引用变量的类型
- 一个对象的方法具体的使用是需要看具体对象的
- 一个对象的属性具体的使用是不需要看具体的对象的,属性在哪里声明在哪里使用
public class _08_方法重写_小案例 {public static void main(String[] args) {// 根据类型推测,调用的是CCC的类中CCC ccc = new CCC();System.out.println(ccc.sum());// 20/** 如果DDD中有sum函数* 如果将DDD转化为CCC的类型* 如果DDD中没有sum函数,则会调用CCC的中函数* */CCC ddd = new DDD();System.out.println(ddd.sum());// 40}
}class CCC {int i = 10;int sum() {return i + 10;}
}class DDD extends CCC {int i = 20;int sum() {return i + 20;}
}
使用内部类
public class _09_内部类 {public static void main(String[] args) {// 如果调用内部类OuterClass outerClass = new OuterClass();OuterClass.InnerClass innerClass = outerClass.new InnerClass();}
}class OuterClass {public class InnerClass {}
}
单例模式
public class _10_单例模式 {public static void main(String[] args) {}
}class User4 {private static User4 user4 = null;private User4() {}// 如果user4中为空,则进行赋值这样只需要调用一次就可以无限创建public static User4 getInstance() {if (user4 == null) {user4 = new User4();}return user4;}
}
final修饰
public class _11_final不可变 {public static void main(String[] args) {final String name = "不可变的名字";User5 user5 = new User5("名字");System.out.println(user5.name);}
}class User5 {// public final String name = "初始化名字";// 使用final修饰,需要手动初始化public final String name;// 可以使用构造函数进行初始化public User5(String name) {this.name = name;}// `final`的方法不可以被子类重写public final void test() {}// ·final`可以修饰参数名public void test(final String name) {}
}
抽象类
- 如果一个类中含有抽象方法,那么这个类是抽象类
- 如果一个类是抽象类,它的方法不一定是抽象方法
- 抽象类无法直接构建对象,但是可以通过子类间接构建对象
- 如果抽象类中有抽象方法,那么子类继承抽象类,需要重写抽象方法,讲方法补充完整
- 抽象方法不可以使用
final
同时使用,包括类名也是
public class _12_抽象类 {public static void main(String[] args) {Chinese chinese = new Chinese();}
}abstract class Person {public abstract void eat();public void test() {}
}// 需要实现父类中方法-抽象类中
class Chinese extends Person {@Override// 看情况是否需要重写public void eat() {}
}
枚举
- 枚举是一个特殊的类,其中包含了一组特定的对象,这些对象不会发生改变,一般都是用大写表示符
- 枚举使用enum关键字使用
- 枚举类会将对象放置在最前面,那么和后面的语法需要使用分号隔开
public class _13_枚举类型 {public static void main(String[] args) {System.out.println(City.BEIJING.name);System.out.println(City.BEIJING.code);}
}enum City {BEIJING("北京", 1001),SHANGHAI("上海", 1002);City(String name, int code) {this.code = code;this.name = name;}public String name;public int code;
}
排序
冒泡排序
public class Main {public static void main(String[] args) {int[] nums = {1, 4, 6, 5, 3, 0, 2};for (int i = 0; i < nums.length; i++) {for (int j = 0; j < nums.length - i - 1; j++) {int num1 = nums[j];int num2 = nums[j + 1];if (num1 > num2) {nums[j] = num2;nums[j + 1] = num1;}}}for (int num : nums) {System.out.println(num);}}
}
选择排序
public class 选择排序 {public static void main(String[] atgs) {int[] nums = {1, 4, 6, 5, 3, 0, 2};for (int j = 0; j < nums.length; j++) {int maxIndex = 0;for (int i = 1; i < nums.length - j; i++) {if (nums[i] > nums[maxIndex]) {maxIndex = i;}}int num1 = nums[nums.length - j - 1];int num2 = nums[maxIndex];nums[maxIndex] = num1;nums[nums.length-j - 1] = num2;}for (int num : nums) {System.out.println(num);}}
}
二分查找
public class _02_二分查找 {public static void main(String[] args) {int[] nums = {1, 4, 6, 5, 3, 0, 2};int targetNum = 4;int start = 0;int end = nums.length - 1;int mid = 0;while (start <= end) {mid = (start + end) / 2;if (nums[mid] == targetNum) break;else if (nums[mid] > targetNum) {end = mid - 1;} else {start = mid + 1;}}System.out.println("数据在" + mid + "位置");}
}
日期类
import javax.swing.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Main {public static void main(String[] args) throws ParseException {Date date = new Date();System.out.println(date);// 使用java自带日期格式化SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss.SSS");System.out.println(simpleDateFormat.format(date));// 将字符串转为日期String dateString = "2023年09月04日 14:43:41.755";// 格式必须符合 simpleDateFormat 格式Date parseString = simpleDateFormat.parse(dateString);System.out.println(parseString);// 根据时间构成时间对象date.setTime(System.currentTimeMillis());// 获取时间戳date.getTime();}
}
日历类
import java.util.Calendar;
import java.util.Date;public class _01_日历类 {public static void main(String[] args) {Calendar instance = Calendar.getInstance();System.out.println(instance);System.out.println(instance.get(Calendar.YEAR));System.out.println(instance.get(Calendar.MONTH));// 获取月份需要+1System.out.println(instance.get(Calendar.DATE));instance.setTime(new Date());instance.add(Calendar.YEAR, 1);// 去上一年instance.add(Calendar.YEAR, -1);// 去年}
}
相关文章:

Java入门
Java导入包 import 主要用于导入在使用类前准备好了Import 关键字可以多次使用,导入多个包Import 关键字可以多次使用,导入多个类如果同一个包中需要大量的类,那么可以使用通配符进行导入如果Import了不同包,相同名称的类&#x…...

深度解析BERT:从理论到Pytorch实战
本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。 关注TechLead&#x…...

小程序数据导出文件
小程序josn数据生成excel文件 先从下载传送门将xlsx.mini.min.js拷贝下来,新建xlsx.js文件放入小程序项目文件夹下。 const XLSX require(./xlsx)//在需要用的页面中引入// 定义导出 Excel 报表的方法exportData() {const that thislet newData [{time:2021,val…...

hadoop1.2.1伪分布式搭建
0.使用host-only方式 将Windows上的虚拟网卡改成跟Linux上的网卡在同一网段 注意:一定要将widonws上的WMnet1的IP设置和你的虚拟机在同一网段,但是IP不能相同 1.Linux环境配置(windows下面的防火墙也要关闭) 1.1修改主…...

【校招VIP】前端JavaScript语言之跨域
考点介绍: 什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是前端校招的一个重要考点,在面试过程中经常遇到,需要着重掌握。本期分享的前端算法考点之…...

mysql调优小计
1.选择最合适的字段属性:类型、⻓度、是否允许NULL等;尽量把字段设为not null,⼀⾯查询时对⽐是否为null; 2.要尽量避免全表扫描,⾸先应考虑在 where 及 order by 涉及的列上建⽴索引。 3.应尽量避免在 where ⼦句中对…...

AI:04-基于机器学习的蘑菇分类
蘑菇是一类广泛分布的真菌,其中许多种类具有重要的食用和药用价值,但也存在着一些有毒蘑菇。因此,准确地区分可食用和有毒的蘑菇对于保障人们的食品安全和健康至关重要。本研究旨在基于机器学习技术开发一种蘑菇分类系统,以实现对蘑菇的自动分类和识别。通过构建合适的数据…...
算法——排序
排序 下面的代码会用到宏定义,因为再C中没有swap交换函数,所以对于swap的宏定义代码如下: #define swap(a, b) {\__typeof(a) __a a; a b; b __a;\ } 稳定排序: 1.插入排序: 插入排序会将数组,分位两个部…...

leetCode动态规划“不同路径II”
迷宫问题是比较经典的算法问题,一般可以用动态规划、回溯等方法进行解题,这道题目是我昨晚不同路径这道题趁热打铁继续做的,思路与原题差不多,只是有需要注意细节的地方,那么话不多说,直接上coding和解析&a…...

100天精通Python(可视化篇)——第99天:Pyecharts绘制多种炫酷K线图参数说明+代码实战
文章目录 专栏导读一、K线图介绍1. 说明2. 应用场景 二、配置说明三、K线图实战1. 普通k线图2. 添加辅助线3. k线图鼠标缩放4. 添加数据缩放滑块5. K线周期图表 书籍推荐 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专…...

哈希表与有序表
哈希表与有序表 Set结构 key Map结构 key-value 哈希表 哈希表的时间复杂度都是常数项级别的,但常数较大 增删改查的时间都是常数级别的,与数据量无关 当哈希表存储的值是基础数据类型(Integer - int),哈希表中内…...

什么时候使用RPA?如何使用RPA?需要什么样的硬件支持?需要安装哪些软件?
RPA(Robotic Process Automation)是一种用于自动化执行重复性任务的技术,它可以帮助企业提高工作效率,降低人力成本,并减少人为错误。RPA适用于各种行业和场景,例如财务、人力资源、客户服务、IT运维等。 …...

R语言入门——line和lines的区别
目录 0 引言一、 line()二、 lines() 0 引言 首先,从直观上看,lines比line多了一个s,但它们还是有很大的区别的,下面将具体解释这个两个函数的区别。 一、 line() 从R语言的帮助文档中找到,line()的使用,…...

C语言:static关键字的使用
1.static修饰局部变量 这是static关键字使用最多的情况。我们知道局部变量是在程序运行阶段在栈上创建的,但是static修饰的局部变量是在程序编译阶段在代码段(静态区)创建的。所以在static修饰的变量所在函数执行结束后该变量依然存在。 //…...

AUTOSAR知识点 之 ECUM (三):ECUM的ISOLAR-AB配置及代码解析
目录 1、概述 2、ISOLAR-AB配置 2.1、EcuMGeneral 2.2、EcuMConfiguration 2.2.1、EcuMDefaultShutdownTarget 2.2.2、EcuMDriverInitListOne...

2023年MySQL-8.0.34保姆级安装教程
重点放前面:演示环境为windows环境。 MySQL社区版本安装教程如下: 一、MySQL安装包下载二、安装配置设置三、配置环境变量 大体分为3个步骤:①安装包的下载;②安装配置设置;③配置环境变量 一、MySQL安装包下载 下载官…...

ElasticSearch入门
一、基本命令_cat 1、查看节点信息 http://192.168.101.132:9200/_cat/nodes2、查看健康状况 http://192.168.101.132:9200/_cat/health3、查看主节点的信息 http://192.168.101.132:9200/_cat/master4、查看所有索引 http://192.168.101.132:9200/_cat/indices二、索引一…...

RocketMQ的Broker
1 Broker角色 Broker角色分为ASYNC_MASTER (异步主机)、SYNC_MASTER (同步主机)以及SLAVE (从机)。如果对消息的可靠性要求比较严格,可以采用SYNC_MASTER加SLAV E的部署方式。如果对消息可靠性要求不高,可以采用ASYNC_MASTER加ASL AVE的部署方式。如果只…...

使用Puppeteer进行游戏数据可视化
导语 Puppeteer是一个基于Node.js的库,可以用来控制Chrome或Chromium浏览器,实现网页操作、截图、测试、爬虫等功能。本文将介绍如何使用Puppeteer进行游戏数据的爬取和可视化,以《英雄联盟》为例。 概述 《英雄联盟》是一款由Riot Games开…...

【Flask】from flask_sqlalchemy import SQLAlchemy报错
【可能出现的情况】 1、未安装 Flask-SQLAlchemy: 在使用 flask_sqlalchemy 之前,你需要确保已经通过 pip 安装了 Flask-SQLAlchemy。可以通过以下命令安装它: pip install Flask-SQLAlchemy 2、包名大小写问题: Python 是区分大…...

索引简单概述(SQL)
一、什么是索引? 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),他们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构࿰…...

union all 和 union 的区别,mysql union全连接查询
602. 好友申请 II :谁有最多的好友(力扣mysql题,难度:中等) RequestAccepted 表: ------------------------- | Column Name | Type | ------------------------- | requester_id | int | | accepter_id | int | | accept_date …...

UDP和TCP的区别
UDP (User Datagram Protocol) 和 TCP (Transmission Control Protocol) 是两种常见的传输层协议。它们在设计和用途上有很大的区别,以下是它们的主要差异: 连接性: TCP: 是一个连接导向的协议。它首先需要建立连接,数据传输完毕后再终止连接…...

阿里云 MSE 助力开迈斯实现业务高增长背后带来的服务挑战
开迈斯新能源科技有限公司于 2019 年 5 月 16 日成立,目前合资股东分别为大众汽车(中国)投资有限公司、中国第一汽车股份有限公司、一汽-大众汽车有限公司[增资扩股将在取得适当监督(包括反垄断)审批后完成]、万帮数字…...

消灭怪物的最大数量【力扣1921】
一、题目分析 需要满足的条件: 只能在每分钟的开始使用武器武器能杀死距离城市最近的怪兽怪兽到达城市就会输掉游戏 游戏最优策略:我们可以在每分钟的开始都使用一次武器,用来杀死距离城市最近的怪兽。这样可以在力所能及的范围内…...

数据结构之算法
算法的基本概念 计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法 算法的基本要素 一个算法是由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构 算法中对数据的运算和操作 在一般计算机系统中…...

MyBatis与MyBatis-Plus的分页以及转换
一、介绍 MyBatis和MyBatis-Plus都是Java持久化框架,用于简化数据库访问和操作。它们提供了面向对象的方式来管理关系型数据库中的数据。 MyBatis是一个轻量级的持久化框架,通过XML或注解配置,将SQL语句与Java对象进行映射,使开…...

TCP/IP网络编程(二) 套接字协议及其数据传输特性
文章目录 套接字协议及其数据传输特性关于协议创建套接字协议族套接字类型1:面向连接的套接字(SOCK_STREAM)套接字类型2:面向消息的套接字(SOCK_DGRAM)协议的最终选择面向连接的套接字:TCP套接字…...

在k8s中使用secret存储敏感数据与四种用法
当需要存储敏感数据时可以使用,secret会以密文的方式存储数据。 创建secret的四种方法 (1)通过--from-literal #每个--from-literal对应一个信息条目 kubectl create secret generic mysecret --from-literalusernameadmin --from-litera…...

国产10米分辨率的卫星介绍、下载和处理教程
10米分辨率的资源卫星介绍、下载和处理教程 简介 说起免费的10米分辨率卫星影像,大家首先想到的是sentinel卫星。但其实还有我国的中巴地球资源卫星04星(CBERS04)。 中巴地球资源卫星(China Brazil Earth Resources Satellite, CBERS)是中国和巴西共同投资、联合研制的地球…...