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

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 关键字可以多次使用&#xff0c;导入多个包Import 关键字可以多次使用&#xff0c;导入多个类如果同一个包中需要大量的类&#xff0c;那么可以使用通配符进行导入如果Import了不同包&#xff0c;相同名称的类&#x…...

深度解析BERT:从理论到Pytorch实战

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

小程序数据导出文件

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

hadoop1.2.1伪分布式搭建

0.使用host-only方式 将Windows上的虚拟网卡改成跟Linux上的网卡在同一网段 注意&#xff1a;一定要将widonws上的WMnet1的IP设置和你的虚拟机在同一网段&#xff0c;但是IP不能相同 1.Linux环境配置&#xff08;windows下面的防火墙也要关闭&#xff09; 1.1修改主…...

【校招VIP】前端JavaScript语言之跨域

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

mysql调优小计

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

AI:04-基于机器学习的蘑菇分类

蘑菇是一类广泛分布的真菌,其中许多种类具有重要的食用和药用价值,但也存在着一些有毒蘑菇。因此,准确地区分可食用和有毒的蘑菇对于保障人们的食品安全和健康至关重要。本研究旨在基于机器学习技术开发一种蘑菇分类系统,以实现对蘑菇的自动分类和识别。通过构建合适的数据…...

算法——排序

排序 下面的代码会用到宏定义&#xff0c;因为再C中没有swap交换函数&#xff0c;所以对于swap的宏定义代码如下&#xff1a; #define swap(a, b) {\__typeof(a) __a a; a b; b __a;\ } 稳定排序&#xff1a; 1.插入排序&#xff1a; 插入排序会将数组&#xff0c;分位两个部…...

leetCode动态规划“不同路径II”

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

100天精通Python(可视化篇)——第99天:Pyecharts绘制多种炫酷K线图参数说明+代码实战

文章目录 专栏导读一、K线图介绍1. 说明2. 应用场景 二、配置说明三、K线图实战1. 普通k线图2. 添加辅助线3. k线图鼠标缩放4. 添加数据缩放滑块5. K线周期图表 书籍推荐 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业》&#xff1a;本专栏专…...

哈希表与有序表

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

什么时候使用RPA?如何使用RPA?需要什么样的硬件支持?需要安装哪些软件?

RPA&#xff08;Robotic Process Automation&#xff09;是一种用于自动化执行重复性任务的技术&#xff0c;它可以帮助企业提高工作效率&#xff0c;降低人力成本&#xff0c;并减少人为错误。RPA适用于各种行业和场景&#xff0c;例如财务、人力资源、客户服务、IT运维等。 …...

R语言入门——line和lines的区别

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

C语言:static关键字的使用

1.static修饰局部变量 这是static关键字使用最多的情况。我们知道局部变量是在程序运行阶段在栈上创建的&#xff0c;但是static修饰的局部变量是在程序编译阶段在代码段&#xff08;静态区&#xff09;创建的。所以在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保姆级安装教程

重点放前面&#xff1a;演示环境为windows环境。 MySQL社区版本安装教程如下&#xff1a; 一、MySQL安装包下载二、安装配置设置三、配置环境变量 大体分为3个步骤&#xff1a;①安装包的下载&#xff1b;②安装配置设置&#xff1b;③配置环境变量 一、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 (从机)。如果对消息的可靠性要求比较严格&#xff0c;可以采用SYNC_MASTER加SLAV E的部署方式。如果对消息可靠性要求不高&#xff0c;可以采用ASYNC_MASTER加ASL AVE的部署方式。如果只…...

使用Puppeteer进行游戏数据可视化

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

【Flask】from flask_sqlalchemy import SQLAlchemy报错

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

3分钟掌握:如何在Windows上直接安装Android应用的终极方案

3分钟掌握&#xff1a;如何在Windows上直接安装Android应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经遇到过这样的情况&#xff1a;手机上有…...

TDEngine-OSS-3.3.7.5开源版高可用部署实战(单节点快速入门与三副本集群搭建详解)

1. TDEngine开源版入门&#xff1a;为什么选择它&#xff1f; 如果你正在寻找一个高性能、开源的时序数据库&#xff0c;TDEngine绝对值得考虑。这个由涛思数据推出的产品&#xff0c;专门为物联网、工业互联网等场景设计&#xff0c;能够轻松处理海量时间序列数据。我最近在实…...

Ender3V2S1切片器脚本配置指南:优化3D打印效果的完整教程

Ender3V2S1切片器脚本配置指南&#xff1a;优化3D打印效果的完整教程 【免费下载链接】Ender3V2S1 This is optimized firmware for Ender3 V2/S1 3D printers. 项目地址: https://gitcode.com/gh_mirrors/en/Ender3V2S1 Ender3V2S1是一款备受欢迎的3D打印机&#xff0c…...

FadCam 安卓后台视频录制应用,支持屏幕关闭录制,多画质高帧率,隐私保护,适配个人安防与事件记录等正当用途

大家好&#xff0c;我是大飞哥。在个人安防、事件记录、现场取证等场景中&#xff0c;普通安卓录屏应用大多需要保持屏幕常亮&#xff0c;不仅容易暴露录制行为&#xff0c;还会快速消耗电量&#xff0c;无法满足隐蔽、长效录制的需求&#xff0c;而部分后台录制工具又存在隐私…...

FixPlus-v1.56.148 一键擦除,会员功能直接解锁

核心功能 AI智能擦除技术可精准识别并移除照片中的干扰元素&#xff08;如路人、杂物&#xff09;&#xff0c;自动填补背景&#xff0c;处理效果自然无痕。AI换衣功能支持智能服装替换与风格调整&#xff0c;为创意编辑提供更多可能。 操作便捷性 无需专业技巧&#xff0c;通…...

如何免越狱定制iPhone界面:Cowabunga Lite完整使用指南

如何免越狱定制iPhone界面&#xff1a;Cowabunga Lite完整使用指南 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite Cowabunga Lite是一款专为iOS 15设备设计的系统定制工具&#xff0c;让普通…...

Phi-3-mini-4k-instruct快速上手:Ollama部署指南,开启你的第一个AI项目

Phi-3-mini-4k-instruct快速上手&#xff1a;Ollama部署指南&#xff0c;开启你的第一个AI项目 1. 认识Phi-3-mini-4k-instruct&#xff1a;轻量级AI助手 Phi-3-mini-4k-instruct是一个仅有38亿参数的轻量级AI模型&#xff0c;由微软团队开发。虽然体积小巧&#xff0c;但它在…...

保姆级教程:在RK3588开发板上编译并加载Xilinx XDMA PCIe驱动(含完整Makefile解析)

RK3588与FPGA的PCIe通信实战&#xff1a;XDMA驱动编译与深度优化指南 当RK3588遇上FPGA&#xff0c;PCIe通信便成为两者之间高速数据交互的核心桥梁。作为一款广泛应用于边缘计算和嵌入式AI场景的ARM处理器&#xff0c;RK3588的PCIe 3.0 x4接口能够提供接近4GB/s的理论带宽&am…...

C/C++调试神器:5分钟搞定backtrace打印调用栈(附完整代码)

C/C调试实战&#xff1a;5分钟集成智能调用栈追踪工具 当你的C/C程序在深夜突然崩溃&#xff0c;控制台只留下一行"Segmentation fault"时&#xff0c;那种绝望感每个开发者都体会过。传统的调试方式往往需要反复加日志、断点跟踪&#xff0c;效率低下。本文将带你用…...

4个维度掌控企业驱动管理:DriverStore Explorer从诊断到优化的全流程方案

4个维度掌控企业驱动管理&#xff1a;DriverStore Explorer从诊断到优化的全流程方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 一、问题诊断&#xff1a;企业环境中的驱动管理痛点…...