java入门,程序=数据结构+算法

一、前言

在学习java的时候,我印象最深的一句话是:程序=数据结构+算法,对于写java程序来说,这就是java的入门。

二、java基本数据结构与算法

1、数据类型

java中的数据类型8种基本数据类型:

整型
byte 、short 、int 、long
浮点型
float 、 double
字符型
char
布尔型
boolean

还有包装类型。所谓包装类型可以理解为都是类。

2、java常见数据结构

栈、队列、数组、链表和红黑树

3、java常见算法算法

排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序等。

查找算法:顺序查找、二分查找、哈希查找等。

字符串匹配算法:暴力匹配、KMP算法、Boyer-Moore算法等。

图论算法:最短路径算法、最小生成树算法、拓扑排序等。

动态规划算法:背包问题、最长公共子序列、最长上升子序列等。

三、如何验证:程序=数据结构+算法

	/*** 获取当前时间,格式为:yyyy-MM-dd HH:mm:ss* @return*/public static String getDateStr() {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return df.format(new Date());}

 比如上面这段代码获取当前时间,格式为:yyyy-MM-dd HH:mm:ss

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

SimpleDateFormat 这个首先是个类型,它的算法就是构造函数

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

df.format(new Date());

这两个算法

返回的String类型其实也就是数据结构

这一段程序涉及到两个数据结构和两个算法

算法1:

  public SimpleDateFormat(String pattern){this(pattern, Locale.getDefault(Locale.Category.FORMAT));}

 将这种格式: yyyy-MM-dd HH:mm:ss 作为参数加工

加工(算法)1:

    public SimpleDateFormat(String pattern, Locale locale){if (pattern == null || locale == null) {throw new NullPointerException();}initializeCalendar(locale);this.pattern = pattern;this.formatData = DateFormatSymbols.getInstanceRef(locale);this.locale = locale;initialize(locale);}

加工(算法)2:

    /* Initialize compiledPattern and numberFormat fields */private void initialize(Locale loc) {// Verify and compile the given pattern.compiledPattern = compile(pattern);/* try the cache first */numberFormat = cachedNumberFormatData.get(loc);if (numberFormat == null) { /* cache miss */numberFormat = NumberFormat.getIntegerInstance(loc);numberFormat.setGroupingUsed(false);/* update cache */cachedNumberFormatData.putIfAbsent(loc, numberFormat);}numberFormat = (NumberFormat) numberFormat.clone();initializeDefaultCentury();}

一层一层下来的算法还是很多的。所以

获取当前时间,格式为:yyyy-MM-dd HH:mm:ss 涉及的算法其实很多。但我们最终程序输出的是字符串类型的 yyyy-MM-dd HH:mm:ss,里面嵌套的函数是一个个算法,当然算法了也涉及到其他的数据类型和结构

一次类推

    /* Initialize the fields we use to disambiguate ambiguous years. Separate* so we can call it from readObject().*/private void initializeDefaultCentury() {calendar.setTimeInMillis(System.currentTimeMillis());calendar.add( Calendar.YEAR, -80 );parseAmbiguousDatesAsAfter(calendar.getTime());}/* Define one-century window into which to disambiguate dates using* two-digit years.*/private void parseAmbiguousDatesAsAfter(Date startDate) {defaultCenturyStart = startDate;calendar.setTime(startDate);defaultCenturyStartYear = calendar.get(Calendar.YEAR);}

推到最下层

我们发现是这样的

    @SuppressWarnings("ProtectedField")protected int           fields[];

就是定义了一个int类型的数组,所以底层还是数据结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/162114.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

餐饮加盟信息展示预约小程序的内容如何

餐饮业规模持续增加,相关从业者逐渐增多,对中等规模以上的餐饮品牌来说,当有一定规模后除了开多家直营店外,还会开放招商加盟,扩展品牌、提升营收等。 由于餐饮加盟属于准属性业务,因此传统线下方式不太适…

小程序使用echarts(超详细教程)

小程序使用echarts第一步就是先引用到小程序里面,可以直接从这里下载 文件很多,我们值下载 ec-canvas 就好,下载完成后,直接放在pages同级目录下 index.js 在我们需要的页面的 js 文件顶部引入 // pages/index/index.js impor…

运动耳机品牌排行榜,推荐几款优秀的运动耳机

​说起耳机,相信大家都比较熟悉,特别是对于喜欢运动的爱好人士来说,那更是随身携带着。随着运动耳机的增长,大家都不知道该如何选择了。对于运动耳机除了需要佩戴稳固舒适之外,还有就是音质表现、防水性能、通话质量等…

鲜花展示预约小程序的内容有有哪些

鲜花店市场规模非常高,一方面是鲜花的用途广泛且需求量增加,另一方面则是入行门槛低,很多城市一条街就有可能汇聚了多家门店,尤其是节假日,对客流量高的门店则更加考验,如花束选购预约、信息展示及客户咨询…

基站/手机是怎么知道信道情况的?

在无线通信系统中,信道的情况对信号的发送起到至关重要的作用,基站和手机根据信道的情况选择合适的资源配置和发送方式进行通信,那么基站或者手机是怎么知道信道的情况呢? 我们先来看生活中的一个例子,从A地发货到B地…

分享一下微信小程序里怎么创建会员卡功能

在当今的数字化时代,微信小程序已经成为一种广泛使用的应用模式,涵盖了各种行业。对于企业而言,拥有一个会员卡系统可以更好地管理客户,提高客户忠诚度,并促进消费。本文将探讨如何在微信小程序中创建会员卡功能&#…

HarmonyOS列表组件

List组件的使用 import router from ohos.routerEntry Component struct Index {private arr: number[] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]build() {Row() {Column() {List({ space: 10 }) {ForEach(this.arr, (item: number) > {ListItem() {Text(${item}).width(100%).heig…

坐公交:内外向乘客依序选座(python字典、字符串、元组)

n排宽度不一的座位,每排2座,2n名内外向乘客依序上车按各自喜好选座。 (笔记模板由python脚本于2023年11月05日 21:49:31创建,本篇笔记适合熟悉python列表list、字符串str、元组tuple的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&…

【kali忘记密码解决办法】

🧋1、kali忘记密码 🧉2、重启不停的按【E】(输入法为英文状态)键进入启动前编辑命令(若系统没有出现这个页面,尝试重启以此来进入引导界面) 🍹3、进入启动前编辑命令界面后&#x…

API接口,超全!免费!简单!

API全称Application Programming Interface,即应用程序编程接口,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定,用于传输数据和指令,使应用程序之间可以集成和共享数据资源。 简单来说,API是处…

【深度学习】pytorch——Autograd

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 深度学习专栏链接: http://t.csdnimg.cn/dscW7 pytorch——Autograd Autograd简介requires_grad计算图没有梯度追踪的张量ensor.data 、tensor.detach()非叶子节点的梯度计算图特点总结 利用Autograd实…

帧间快速算法论文阅读

Low complexity inter coding scheme for Versatile Video Coding (VVC) 通过分析相邻CU的编码区域,预测当前CU的编码区域,以终止不必要的分割模式。 𝐶𝑈1、𝐶𝑈2、𝐶𝑈3、&#x…