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 是区分大…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
Linux-进程间的通信
1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...
