【JAVA】 01-Java基础知识
链接:
笔记目录:毕向东Java基础视频教程-笔记
GitHub库:JavaBXD33
测试
01-Java基础知识
一、数据类型
基本类型
title...
(just a test....)
目录
注:<按需!!!>目录部分就简单来,在内容部分可以在最开始加一个“本节关键字摘要”
1-语言环境搭建及使用入门
- 1.1-Java语言环境的搭建
- 1.2-hello world
- 1.3-classpath的配置
2-Java基础语法
- 2.1-
(数据类型,自增自减,位运算(重点说一下应用场景,特别是两值互换的三种思路))
(选择结构:switch中选择的类型只有四种(后期加了两种);若某个case缺了break时的执行流程)
(循环结构:for与while的区别-初始化变量的作用域;最简单的无限循环两种形式)
(流程控制语句 - break:下方若有语句,则执行不到,会报错,如果要放在前面,可加一个if判断之类的,把break放在if中(常用思路,后面的return同理);在for嵌套时默认跳出当前,在内循环时默认内,当在内循环而希望跳出外循环时-命名内外循环后break outer;)
(典型题目:...)
3-函数
(函数的三要素:函数名,参数列表,结果类型)
(return:两个功能-结束函数(注意这个),返回结果,因此如果return下方还有语句,则下方语句会被屏蔽执行不到,编译报错)
(定义函数:明确1:这个功能的结果是什么?明确返回值类型;明确2:这个功能需求未知内容是什么?明确参数列表)
(函数重载overlord:只要参数个数或者参数类型不同,与返回值类型无关;参数列表是有顺序的,顺序不同也算作重载)
(函数的内存调用图解:栈-先入后出)
4-数组
(数组:是一个容器,用new新建容器)
(数组定义的格式:一维数组:两种-格式加示例)
(数组作为引用型变量,指向为空时赋值为null而不能是0,0作为地址在计算机中是不能随便拿来用的)
(java内存机制:java对内存的划分-5部分;栈及其特点;堆及其特点,对比;图示略或截图)
(图示:如下两个图)
(数组操作的常见问题:数组脚标越界异常;空指针异常)
(数组长度的获取:属性length-arr.length可获取到数组的长度值)
(数组的应用:)
(注:每个应用都附相应的代码链接)
(应用1:多个数求和-最基本:定义变量,for遍历数组,return;容器:一旦数多了,先存,后操作)
(应用2:求最值-注意点:max初始化为数组中的某个值(建议为第一个arr[0]),不要初始化为数组之外的(设为0而数组中都是负数时);遍历数组时从第二个开始(从第一个开始,则自己跟自己比较);若初始化max=0,也可以拯救一下,将max作为脚标,if(arr[x]>arr[max]) {max=x})
(应用3:将数组转成字符串:需求;思路-字符串的累加或者相连接原理;优化:temp初始化带[,for循环中加入判断是否是最后一个元素来决定加逗号还是方括号)
(应用4:查表法:查表法定义(笔记页最下方);数组容器的特点;使用场景;分析需求。。。笔记那一整页都搬运过来;例子一组数(有规律的数可以造出来不用存,无规律数列给予有序编号作为索引;星期的查表法-鲁棒性-return与抛出异常的对比))
(应用5:转十六进制数组版:问题-顺序反了,解决:每运算出一位,不要打印,先存;反着存;关键点:定义为char数组,每计算出一位进行判断并转为char类型,反着存需要定义索引index并做减减运算,额外定义一个toString函数将字符数组转为字符串而不是在toHex函数中打印,“0x”加在toHex函数的return位置而不是toString函数中)
(应用6:转十六进制去零版:去零的位置-不是在得到字符数组之后再遍历判断,而是更早,在右移运算阶段就进行判断,当剩余为0时即停止;索引的设置:初始化为数组长度,并在while循环中,当条件满足时才自减arr[--index],保证索引index最终指向的是数组中非空位的最后一位,并在toString的参数列表中加入索引,则得到的字符串没有空位,是非常舒适的结果)
(应用7:转十六进制查表版:首先建立表;在循环的计算阶段把转换改为直接查表,省去了判断,非常厉害arr;关键步骤:arr[--index]=chs[temp];)
(应用8:进制转换通用版:定义总的进制转换函数trans,然后将其中不同进制的不同参数加入参数列表;引入API帮助文档,可以直接用java定义好的工具,示例)
(排序:排序有七种算法,最快的是希尔排序)
(应用9:选择排序:思想:大圈套小圈-拿第一个脚标跟剩余元素比较,获取最值并存放到第一个脚标位置,作为一轮,之后拿第二个脚标遍历比较;图解;外循环-多条线的起点,x<arr.length-1因为如图取0-4即是五次,内循环-从起点发出的箭头;返回值为void是因为数组作为引用型变量,调用时把主函数中的地址传给函数,操作后原地址指向的数组已经变了,与基本数据类型的处理相区别)
(应用10:冒泡排序:思想:大圈套小圈-第一轮从0脚标开始,脚标相邻的两个数比较,小的放前,大的放后,得到最大值放在最后一个脚标位置(之后不必再比),第二轮继续从0脚标开始,相邻两数比较,遍历到最后一个脚标的前一个为止,得到第二大的数放在倒数第二个脚标位置,以此类推;图解;外循环-控制行数x<arr.length-1,需要减1,因为如图第一行比较5次,0-4就是5次,内循环-控制每一行的内容,y<arr.length-1-x,-1防止脚标越界,-x控制每行递减的最大值;实际开发中用java写好的功能即可,优化好的,并且自己写容易错:import java.util.Arrays; Arrays.sort(arr);)
(应用11:位置置换代码的抽取:两个排序中都包含了位置置换代码,为提高复用性,抽取出来;返回值为void;参数列表注意不要遗漏了数组arr,否则换完也没有效果)
(应用12:普通查找方式:遍历,效率低;返回值类型-int,索引;参数列表-数组arr和查找目标key;脚标不存在时取一个负数(脚标从0开始,非负,取-1是规范写法) return -1)
(应用13:二分/折半查找方式:思路:1234;前提-必须有序,无序用普通查找,不建议先对无序数组排序后使用二分,因为这样脚标值其实变了;按脚标折中,中间值求法1-mid=(min+max)/2,求法2-位运算更快mid=(min+max)>>1,注意是整除,结果是小数时舍弃小数位;注意点-1-100的数,盲猜50,小,则下一步从51-100里取,而不是50-100,端点值比较过了,去掉;所查找的数不存在时-通过判断是否min<=max,错位时不再折半返回-1;代码体现:最外侧while判断条件的两种形式-一种判断是否与中间值相等(while(arr[mid]!=key)),一种判断头尾脚标有无距离(while(min<=max)))
(二维数组:定义-三种格式(不同格式对应不同的图解和打印含义,分别说一下);内存图解;打印显示含义-三种情况分析;二维数组的长度-arr.length表示二维数组的长度(即有几个一维数组)arr[i].length表示其中某一个一维数组i的长度)
(定义格式1-图解)
(定义格式2-图解1)
(定义格式2-图解2-对一维数组赋值后)
(数组练习:)
(练习1:数组反转;思路:头尾互换,不断移动脚标,直到两个脚标交叉)
(练习2:在有序数组中插入元素时获取插入点;思路:有序数组查找元素用二分查找,元素不在数组中是return min,分析三种不同情况证明确实是min;实际开发中可直接用java自定义的二分查找Arrays.binarySearch(arr, key),其中return -(min+1),查找不到时返回插入点并表示为负数,+1为了区分当脚标为0时仍表示为负数)
(基础部分小结:编程思想)
(在注释中写明分析思路:需求-思路-步骤-相应代码-测试)
(函数复用性:函数复用性-函数抽取封装,主函数中只放需要执行的代码)
(对象复用性:多个类中需要相同功能时,将所需功能封装到指定类中,使用时只要找到功能所属的类就可以了-同为引用型变量,类与数组一样,使用前需要先new一个实体出来才能继续用,示例关键语句(那两句);功能类中可以定义多个相似或集中的功能;使用时不需要考虑功能类中的具体代码,只要用生成的.class文件即可--引出“对象”:ArrayTool tool=new ArrayTool();//这个就是对象,类就是对象;实际开发中用java写好的功能,调用即可Arrays.sort(arr);)
ps:
- 不确定性在java里是不允许存在的(例如函数重载时参数列表相同会报错)
- 废话在java里是不允许存在的(例如break或者return下方永远都执行不到的语句会报错)
1-语言环境搭建及使用入门
1.1-Java语言环境的搭建
1.2-hello world
1.3-classpath的配置
END
【JAVA】 01-Java基础知识的更多相关文章
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- 第76节:Java中的基础知识
第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...
- Java面试题-基础知识
参考文章:Java面试题-基础知识 基础能力 什么是值传递和引用传递 线程状态有哪些,它们之间是如何转换的 进程与线程的区别,进程间如何通讯,线程间如何通讯? HashMap的数据结构是什么?如何实现 ...
- JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...
- JAVA核心技术I---JAVA基础知识(static关键字)
一:static特殊关键字用处 –变量 –方法 –类 –匿名方法 二:静态变量:类共有成员 –static变量只依赖于类存在(通过类即可访问),不依赖于对象实例存在. –所有的对象实例,对于静态变量都 ...
- Java JDBC的基础知识(三)
在前面的Java JDBC的基础知识(二)和(三)中,主要介绍JDBC的原理和简单的应用过程.尤其在(二)中,可以发现代码进行多次try/catch,还有在前面创建连接等过程中好多参数我都给写定了. ...
- Java JDBC的基础知识(二)
在我的上一篇Java JDBC的基础知识(一)中,最后演示的代码在关闭资源的时候,仅仅用了try/catch语句,这里是有很大的隐患的.在程序创建连接之后,如果不进行关闭,会消耗更多的资源.创建连接之 ...
- Java并发(基础知识)—— Executor框架及线程池
在Java并发(基础知识)—— 创建.运行以及停止一个线程中讲解了两种创建线程的方式:直接继承Thread类以及实现Runnable接口并赋给Thread,这两种创建线程的方式在线程比较少的时候是没有 ...
- 【java基础】01 计算机基础知识
一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...
- 大数据学习笔记——Java篇之基础知识
Java / 计算机基础知识整理 在进行知识梳理同时也是个人的第一篇技术博客之前,首先祝贺一下,经历了一年左右的学习,从完完全全的计算机小白,现在终于可以做一些产出了!可以说也是颇为感慨,个人认为,学 ...
随机推荐
- 21eval 函数
eval() 函数十分强大 ---- 将字符串 当成 有效的表达式 来求职 并 返回计算结果 # 基本的数学计算 # 字符串重复 print(eval("'*' * 5")) # ...
- Linux 部署或升级openssh7.5p1
运维Linux系统,部署或升级openssh是经常面临的事,以下已redhat6和redhat7为例. 在redhat6中部署openssh会有什么坑,在编辑openssh源码包时会报一些类似的错误, ...
- alert(1) to win 11
- 前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,,怎么实现好?
昨天,看这道题,脑子锈住了,就是没有思路,没看明白是什么意思?⊙﹏⊙|∣今天早上起床,想到需要思考一下这个问题. 当然,我没想明白为什么要这样做?(创建一个长度为100的数组,并且每个元素的值等于它的 ...
- 使用django 的cache设置token的有效期
from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import A ...
- Nginx-常用命令和配置文件
Nginx常用命令 1.启动命令 在/usr/local/nginx/sbin 目录下执行 ./nginx 2.关闭命令 在/usr/local/nginx/sbin 目录下执行 ./nginx s ...
- Java面向对象(二) 接口、多态和泛型
一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...
- navicat的使用(测试库和正式库同步)以及用plsql改表字段属性
说明:数据库的操作,除了查询,最好先做好备份,比如数据同步.更新.修改或删除之类的: netstat -antp 查看mysql端口 firewall -cmd --list-all 查看防 ...
- Selenium-ActionChainsApi介绍
ActionChains 模拟鼠标悬浮到某一个位置,做一系列的连贯操作,使用Selenium提供的ActionChains模块 引入方式 from selenium.webdriver.common. ...
- 【Java】Java调用第三方接口
Get请求与Http请求 https://www.w3school.com.cn/tags/html_ref_httpmethods.asp HttpClient HTTP 协议可能是现在 Inter ...