7.13
一.掘金笔记的使用
- markdown :掘金笔记的技术语法
- inline:内嵌,同一行
- 插入图片扩展:图片地址括号结尾内加“图片标题”
二.Java介绍
- java创始人之一,詹姆斯·高斯林。
- “一次编译,到处运行”:java自带虚拟机,JVM,可跨操作系统,源代码编译成的字节码可跨平台,而C语言不能跨平台。
- JVM相当于一个软件
- JVM在JRE中,JRE在JDK中
- 源代码不能运行,java运行的是字节码,javac编译源代码,都在bin里
- 命令行查版本号:java -version
三.Java基础
- 类的三要素:关键字、类名、类体
- 方法的四要素:返回值、方法名、参数列表、方法体
- main是所有方法的主入口,要加public,main结束程序就结束,不需要加返回值,jvm调用main方法
7.14
intelliJ IDEA长久使用方法
- 启动IDEA
- 在启动界面,点击 [Configure] 进入配置
- 点击 [Edit Custom VM Options...] 编辑自定义启动设置
- 在自定义启动设置界面的最后一行填写"-javaagent:C:\Softs\Idea\Idea201924\jetbrains-agent.jar",其中"-javaagent:"后面是你pj,jar包的位置;
- 点击 [Save] 保存操作;
- 关掉面板,重启IDEA,这步很重要,否则会失败!
- 在启动界面,点击 [Configure] 进入配置
- 点击 [Manage License...] 管理声明信息
- 选择[Activation code] 复制粘贴激活码,并点击 [OK] 完成激活;
- 进入程序后,可以通过[Help] - [Register]检查是否成功。
快捷方式
- main+回车,sout+回车(输出快捷)
- ctrl+d复制粘贴上一行代码
- ctrl+alt+l 自动对齐代码格式
- ctrl+? 单行注释快捷
- ctrl+shift+? 多行注释快捷
- ctrl+q 查看方法的详细信息
7.15
快捷方式
- ctrl+shift+u 字母变大写
- ctrl+shift+y 翻译
- alt+回车 快速导包
- alt+insert 快速导get/set方法
- 面对代码沼泽,效率面前依旧要选择整洁
- 比如:我认为适当环境,医生手术前要进行消毒,要拒绝患者的迫切,做好专业
7.16
- 8大数据类型:byte,short,int,long,double,float,boolean,char
- 其余为引用数据类型,例如:string,数组
- 类全名:包名+类名
- com.oralce.text.HelloWorld
- API就是一堆方法
- 方法分为静态方法和非静态方法
- 正则表达式返回bollean类型
- 元字符:跟内容无关
- 正则应用
- 数据验证
- 替换文本(不需使用
^,$) - 提取子串
- string不可变,大量
+拼接不要用,会产生多余字符串,占内存
作业
- 返回字符串"ABC"中2号位置上的字符。
- 将"DE"追加到"ABC"末尾。
- 返回"ABC"中是否包含"AC"。
- 返回"ABC"是否以"BC"结尾。
- 返回"ABC"是否以"B"开始。
- 返回"ABC"是否以"BC"开始。
- 返回"ABC"和"abc"是否相等。
- 返回"ABC"和"abc"是否相等,忽略大小写。
- 返回"ABC"中,"A"第一次出现的位置。
- 返回"ABC"中,"A"第一次出现的位置,(从1号位开始查找)。
- 返回"ABC"中,"A"最后一次出现的位置。
- 返回"ABC"中,"A"最后一次出现的位置,(从1号位开始查找)。
- 返回""是否是空字符串。
- 返回"林JUNJIE"有多少个字节。
- 返回将"ABCA"中的所有"A"都替换成"a"之后的字符串。
- 返回"ABCD"中2号位之后(包括2号位)的字符串。
- 返回"ABCD"中1号位(包括1号位)和2号位之间的字符串。
- 返回"ABCD"转成小写之后的字符串。
- 返回"ABCD"转成大写之后的字符串。
- 返回" abcd "两端去空格之后的字符串。
- 返回以"我叫%s,今年%d岁了,月薪%.2f元"为模板的格式化输出内容。
- 返回将一个布尔类型的true转换为字符串"true"的结果。
7.17
- 运行时数据区
- 基本数据类型都在栈中
- 引用数据类型内存地址放在栈,值放在堆中
- new关键字是在堆内容中开辟空间
- 基本数据类型调用不了方法
- 使用任何方法时都尽量把常量写在.前,避免用null调方法
- ctrl+f 快速查找单词
- ctrl+f12 快速查看当前类中的属性和方法
- equals和
==区别 - ctrl + h展示儿子类
- bollean类型不能转换
练习
1.
2.
3.
4.
5.
6.
7.
- 逻辑会发生短路
7.20
- 范围判断用if,指定判断用switch
- 未知循环次数用while,已知循环次数用for
- 引用数据类型:数组,
作业
1.如果你不给我一百万,我是不会嫁给你的!
2.山无棱,天地合,才敢与君绝!
3.定义一个年龄,年龄在0-100岁之间,如果小于100岁为老年,小于50岁为中年,小于30岁为青年,小于16岁为儿童。
4.利用Scanner输入性别和年龄,并根据下表自主分析:
| 年龄 | 性别 | 称谓 | 年龄 | 性别 | 称谓 |
|---|---|---|---|---|---|
| 0-2 | 男女 | 襁褓 | 20 | 男孩 | 弱冠 |
| 2-3 | 男女 | 孩提 | 24 | 女孩 | 花信 |
| 3-7 | 男孩 | 韶年 | 24+ | 女孩 | 票梅 |
| 3-7 | 女孩 | 髻年 | 30 | 男孩 | 而立 |
| 7-10 | 男女 | 黄口 | 40 | 男孩 | 不惑 |
| 12 | 女孩 | 金钗 | 50 | 男孩 | 知命 |
| 13 | 女孩 | 豆蔻 | 60 | 男孩 | 花甲 |
| 13-15 | 男女 | 舞勺 | 70 | 男孩 | 古稀 |
| 15 | 女孩 | 及笄 | 80 | 男孩 | 杖朝 |
| 16 | 女孩 | 碧玉 | 90 | 男孩 | 耄耋 |
| 20 | 女孩 | 桃李 | 100 | 男孩 | 乐期颐 |
5.指定一个图书编号,01代表红楼梦,02代表西游记,03代表金瓶梅,04代表水浒传,对应编号输出。
6.指定一个分数,60分以下不及格,60-80之间及格,80-100优秀,要求只能使用switch。
7.使用while循环来输出10-15。
8.假设,芳芳答应老王攒够60万就嫁给他,老王去隔壁街小黑屋卖血一次可以赚1000元,求老王需要卖多少次血才能娶到芳芳。
9.小兵今年13岁,大兵36岁,求多少年后大兵的年龄是小兵的2倍?
10.使用doWhile循环来输出10-15。
11.本金1万元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金,计算5年之后,获得的本金是多少?
12.求整数1-100的累加值,但要求第3,第6,第9...(3的倍数)个值,跳过不计算。
13.利用for循环,输出1-100之间所有的偶数。
14.利用for循环,求从0开始每次加5,加多少次之后可以达到135。
15.你是一个土豪,你去参加非诚勿扰节目,现场一共有11位女嘉宾,从第一位女嘉宾开始循环出场,直到你喜欢的四号女嘉宾出场的时候,输出“I love you!”
7.21
练习
- 拆读数字(三位数),例如:153翻译成一百五十三。
- 打印1-2000之间既能被3整除又能被8整除的前15个数,逢5换行。
- 输出菲波拉契数列的前20项(1,1,2,3,5,8…)。
- 编写程序算出1!+2!+3!+ … +10!的和。(3!标识123)。
- 判断101-200之间有多少个素数,并输出所有素数,除了1和本身不能被任何数整除的数叫素数。
- 工作中尽量不要用递归,效率低
- Math.pow(a,3),a的立方
作业
7.22
- 选择排序是不稳定的排序方法,特点是抢夺
7.23
面向对象(OOP)
- 面向对象
- 核心:调用
- 面向对象包含面向过程
- 特征:抽象(不涉及代码,可不算),封装,继承,多态
- 对象:
- 万事万物皆对象
- 对象具有唯一性
- 对象可以具有属性和行为(方法)
- 不带括号是属性,带括号是方法,属性和方法尽量用privite
- 抽象:
- 核心:提取,把我们关注的部分总结归纳成概念类。
- 类通过new实例化形成实例;实例通过抽象、封装得到类。
- 封装:
- 先"装"后"封",通过抽象思想得到想要关注的属性和方法,然后把它们写在一个类中,这个过程就是"装","封"是为了保护对象隐私。
- 类:
- 就是对象通过抽象的思想将比较关注的属性和方法提取出来,然后再将这些属性和方法封装到一个单元中而形成的最终产物
- static:共享且唯一,静态属性不属于某个实例,属于某一模板,实例之间的属性可以互相改变,静态不可以。所以静态属性可以称为类属性。
- 静态先行,静态方法不能调用非静态属性,只能调用静态属性
- 先执行静态块,动态快,再执行构造器,静态块只执行一次。所以是先初始化,再构造。 把类从硬盘上加载到内存,执行初始化,再执行构造器。
7.23
- 重写方法,建议加@Override
- this表示当前实例,实例需要new,静态先行,所以this不能用在静态块中
- JavaBean用来存储数据,简单的可传输的功能类
- POJO:1. getter/setter方法的类 2. 一个无参的构造函数
- POJO纯,JavaBean不纯
- 持久化:将内存中的临时数据变成硬盘或者数据库中持久数据的过程。
- POJO分类:
VO用在前端,BO用在业务层,PO,DTO用在数据层(持久层),作用都是传输数据,一般情况相互独立。(了解即可)
- super调用子类构造时,会先调用父类构造,再调用子类构造
- 方法看右边,属性看左边
7.27
- java.lang.ClassCastException转换异常
- 抽象类可以new
- YNNNN NNNNN NYNYN YYYYY YNN
- 接口之间可以多继承,不能互相实现,接口没有构造器,接口与类之间无继承关系,仅为实现
- new一个构造器,要先调用父类的
- 方法重写注意:一大两小两不变,(在继承关系的两个类中)
- 修饰符越写越大
- 异常和返回值越写越小
- 方法名,参数列表不变
7.28
- OCP开闭原则
- 成员内部类不能有静态,不需加public
- 内部类访问外部类属性:
Outer.this.fild或new Outer().fild - 静态没有this
- lambda表达式是简化匿名内部类写法
- enum枚举
- 枚举常量必须放在最上面
- 枚举类.枚举属性来调枚举属性
- 枚举类的构造器不能new,只能自己类去调用
7.30
- 非受检异常不用管,如runtimeException
- 受检异常必须处理,如Exception
- ctrl+alt+t 快速try/catch
- Integer是引用数据类型,需要new。
Integer a=10;10是int类型,强转成Integer
8.3
- 快速查找访问DNS:tool.chinaz.com/dns