Java 课堂笔记7.13——7.31

290 阅读9分钟

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就是一堆方法

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

  • 逻辑会发生短路

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

练习

  1. 拆读数字(三位数),例如:153翻译成一百五十三。
  2. 打印1-2000之间既能被3整除又能被8整除的前15个数,逢5换行。
  3. 输出菲波拉契数列的前20项(1,1,2,3,5,8…)。
  4. 编写程序算出1!+2!+3!+ … +10!的和。(3!标识123)。
  5. 判断101-200之间有多少个素数,并输出所有素数,除了1和本身不能被任何数整除的数叫素数。
  • 工作中尽量不要用递归,效率低
  • Math.pow(a,3),a的立方

作业

7.22

  • 选择排序是不稳定的排序方法,特点是抢夺

7.23

面向对象(OOP)

  • 面向对象
    • 核心:调用
    • 面向对象包含面向过程
    • 特征:抽象(不涉及代码,可不算),封装继承多态
  • 对象
    1. 万事万物皆对象
    2. 对象具有唯一性
    3. 对象可以具有属性和行为(方法)
      • 不带括号是属性,带括号是方法,属性和方法尽量用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.fildnew 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