 
			java的初步学习
java的下载与配置
下载java
- 安装jdk 
 根据自己的操作系统与位数进行选择即可
- 在安装过程中记住路径 
配置环境变量
- 右击此电脑,点击属性,找到高级系统设置 
- 点击环境变量 
- 新建系统变量 变量名取为 JAVA_HOME 变量值为安装java的路径 
- 在用户变量的path进行编辑并新增加一行 输入**%JAVA_HOME%\bin** 
测试
按下win+R,点击cmd进入命令行,输入java察看是否安装完毕
vscode配置java环境
安装扩展
- debugger for java
- language support for java
- extension pack for java
新建一个Java文件进行运行就好啦
java基础知识(基于MIT 6.092: Introduction To Programming In Java)
chapter1-types,variables,operators
first programme
| 1 |  | 
分析一下基本结构
| 1 |  | 
second programme
| 1 |  | 
type
- boolean:真值(true or false)
- int:整数
- double:Real number(3.14,-2.1)
- String:字符串
variables
变量名称
assignment
用”=”进行赋值
third programme
| 1 |  | 
operators
- assignments =
- addition +
- subtraction -
- multiplication *
- division /
- 使用时的优先级遵守数学中的优先级
string contcation
| 1 |  | 
hw1
第一次作业设计一个计算最终位置的小程序
| 1 |  | 
chapter2-more types,methods,conditions
more types
- division(在整数和小数中使用存在差异,这和C语言是相符的)
- 也存在类型转化,这也和C语言相符合
methods
- adding methods
for example
| 1 |  | 
- parameters
| 1 |  | 
example
| 1 |  | 
- multiple parameters
即类似C语言中引入多个参数进行传入
- return values
同样运用类似的方法,即public static (void=>type name) name()
- variable scope
变量的作用域就在它们所定义的{}中
| 1 |  | 
- methods:building blocks 
- 数学函数(形如Math.+函数进行引用) 
conditionals
- if statement(和C语言中一样) 
- comparision operator(> < >= <= ==) 
- boolean operator(&& ||) 
- else 和 else if 
hw2
设计一个计算薪资的程序
| 1 |  | 
chapter3-Loops,arrays
good programming style
- 目的是为了让你的代码可读性更强 
- 在定义变量名时尽量使之与程序本身有关系 
- 用好缩进来表示程序的层次结构 
- 在一行较长的代码中间可适当多加空格 
loops
- the while operator(用法与C语言相同) 
- the for operator(用法与C语言相同) 
- loop的其余用法也都与C语言相同 
array
- create an array
| 1 |  | 
- initiallize an array
| 1 |  | 
- length of an array
| 1 |  | 
- string array
| 1 |  | 
hw3
寻找一个最大值
| 1 |  | 
chapter4-class and objects
object oriented programming(面向对象编程)
defining classes
class definition
| 1 |  | 
using classes
example
| 1 |  | 
reference vs values
- primitives vs references 
 primitive type就是java中最基本的如:int,double,float
 reference type是数组和对象
- references 
 object的位置在java中称作reference
 下面的这张图能够比较好解释![reference]() 
 并使用=update the reference
static methods and types
- 静态内部类
 特点:不依赖于外部类的实例,可以直接通过外部类的类名访问。
 静态内部类只能访问外部类的静态成员和静态方法,不能直接访问外部类的实例变量或方法。
example
| 1 |  | 
- 静态方法(不需要创造类的实例则可以调用,不能直接访问变量实例或实例方法)与实例方法(必须先创立类的实例再进行调用)
example
| 1 |  | 
- 两者的优劣
静态方法适合那些不依赖于实例变量状态的操作,例如实用程序方法、工具方法或者仅仅对输入参数进行处理的方法。
实例方法适合需要访问和操作实例变量、实现对象特定行为的方法,例如修改对象状态、调用对象的其他方法等。
hw4
这一次的程序涉及两个java程序Book.java和Library.java
| 1 |  | 
chapter5-access control,class scope,packages,java api
access control
- public vs private
 public:其他class都能用
 private:只有这个class可以用
class scope
- “this” keyword(意味着此对象)
| 1 |  | 
packages
- 每一个class若属于一个package目的相同
- classes若在其他package中,则需要import
example
| 1 |  | 
- 为什么使用package(将相似的函数结合在一起) 
- special package(java.lang 所有的class都能“看见”java.lang中的class) 
java API(应用程序接口)
- array list
| 1 |  | 
- Sets(Treeset 和 hashset) 没有下标
| 1 |  | 
- maps(存储一组值,通过寻找key返回value)
| 1 |  | 
- 补充
| 1 |  | 
| 1 |  | 
hw5
设计一个动画,但是主程序已经给出,主要修改一个副程序
| 1 |  | 
chapter6-design,debugging,interfaces
good programme designing
debugging
- assert(感觉比较类似python中的assert)
| 1 |  | 
interfaces
java内置常见方法
List类
| 1 |  | 
Stringbuilder(处理大量字符串时可以使用)
| 1 |  | 
String类(字符串处理方式)
| 1 |  | 
hashmap
| 1 |  | 
leetcode记录
滑动窗口
209 长度最小的子数组(中等)
- 最开始利用java语言尝试用暴力法进行解决但是运行超时,现在准备用滑动窗口的思路进行解决。
- 解决此问题的大体思路是利用双指针的思想,头尾进行向右移动的操作,如果此时的sum>=target,则start向右移动,否则end向右移动。
| 1 |  | 
30 串联所有单词的子串(困难)
- 最开始的思路就是从给定的字符串入手一个一个往前找, 
 但是检测到178项时出现超时的情况,只有再进一步结合滑动窗口的特性进行算法的优化。这样的时间复杂度为$o(n^2)$
- 改进算法:根据题解可以知道需要利用哈希表加上滑动窗口对算法进行优化 
- 我们首先使用一个哈希表map来记录words中单词与其相应的出现的次数
- 然后我们可以对于输入的字符串s进行分析,每次进行取长度为mxn的子串
- 但是这样写出来的程序仍然存在超时的可能,我们可以进行取余的优化
- 也就是通过单词长度的余数进行分类的区划,在每一个区划中
| 1 |  | 
76 最小覆盖子串(困难)
动态规划
3259 最大化的能量(中等)
698 划分为k个相等的子集(中等)
- 感觉每日一题得坚持下去
字符串
3265 统计近似相等数对(中等)
- 这是一场周赛的题目,当时我作答时最开始使用哈希表思路有误
- 后面发现可以通过将整数转化为字符串,再将字符串转化为字符数组
- 然后进行暴力交换进行枚举应该能通过测试,因为这道题的数量级并不是很大
- 在暴力修改的过程中发现出现问题,最重要的问题就是每个整数都会存在一个前导零,所以交换后可能存在0的情况
- 一个多小时的缝缝补补,终于结束了,码力还得练
| 1 |  | 
 
    