Day01
1. java开发环境:
- 编译运行过程:
- 编译期:.java源文件,经过编译,生成.class字节码文件
- 运行期:JVM加载.class并运行.class(0和1)
> 特点:跨平台,一次编译到处运行
- 名词解释:
- JVM:java虚拟机
加载.class并运行.class
- JRE:java运行环境
除了包含JVM以外还包含了运行java程序所必须的环境
JRE = JVM+系统类库(小零件)
- JDK:java开发工具包
除了包含JRE以外还包含了开发java程序所必须的命令工具
JDK = JRE + 编译、运行等命令工具
> 说明:
> 1. 运行java程序的最小环境为JRE
> 2. 开发java程序的最小环境为JDK
2. idea:
- JetBrains公司的,分为社区版(免费的)和终级版(收费的)
- 开发步骤:
- 新建Java项目/工程-------------------小区
- 新建Java包------------------------------楼+单元
- 新建Java类------------------------------房子
- 注释:
解释性文本(计算机不执行)
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */
- 补充:
1. IDE:集成开发环境,是一整套带图形界面的包含复杂功能的工具,常用的有Idea和Eclipse
2. Java以前是Sun公司,但是Sun已经被Oracle收购了,所以现在说Java是Oracle公司的
换算:
1G=1024M(兆)
1M=1024KB(千字节)
1KB=1024B(字节)
1B=8bit(位)
Day02
1. 变量:
存数的
- 声明:
在银行开个帐户
- 初始化:
给帐户存钱
- 使用:
使用的是帐户里面的钱
- 对变量的使用就是对它所存的那个数的使用
- 变量在使用之前必须声明并初始化
- 命名:
- 只能包含字母、数字、_和$符,并且不能以数字开头
- 严格区分大小写
- 不能使用关键字
- 允许中文命名,但不建议,建议"英文的见名知意"、"小驼峰命名法"
2. 八种基本数据类型:
byte、short、int、long、float、double、boolean、char
- int:
整型,4个字节,-21多个亿到21个多亿
- 整数直接量默认为int类型,但不能超出范围,若超范围则发生编译错误
- 两个整数相除,结果还是整数,小数位无条件舍弃
- 整数运算时,若超范围则发生溢出(溢出不是错误,但是需要避免)
- long:
长整型,8个字节,很大很大很大
- 长整型直接量需在数字后加L或l
- 运算时若有可能溢出,建议在第1个数字后加L
- double:
浮点型,8个字节,很大很大很大
- 浮点数直接量默认为double型,若想表示float需在数字后加F或f
- double和float型数据参与运算时,有可能会发生舍入误差(精确场合不能使用)
- boolean:
布尔型,1个字节
- 只能赋值为true或false
- char:
字符型,2个字节
- 采用Unicode编码格式,一个字符对应一个码
表现的形式是字符char,但本质上是码int(0到65535之间)
(ASCII码:'a'----97 'A'----65 '0'----48 )
- 字符直接量必须放在单引号中,并且只能有一个
- 特殊符号需要通过\来转义
3. 类型间的转换:
- 数据类型大小
从小到大依次为:byte,short,int,long,float,double
char
- 两种方式:
- 自动/隐式类型转换:小类型到大类型
- 强制类型转换:大类型到小类型
> 语法:(要转换成为的数据类型)变量
> 注意:强转有可能溢出或丢失精度
- 两点规则:
- 整数直接量可以直接给byte,short,char赋值,但不能超范围,若超范围则编译错误
- byte,short,char型数据参与运算时,系统会统一将其先转为int再运算
4. 补充:
1. 命名法:
- 小驼峰命名法:第1个单词首字母小写,其余单词首字母大写--------变量
- 大驼峰命名法/帕斯卡命名法:所有单词首字母大写---------------------类
2. 数据类型分类:
- 基本数据类型
- 引用数据类型
3. Unicode:通用码、统一码、万国码,是一个世界级通用的定长(固定16位)字符集
Day03
1. 运算符:
- 算术:
+、-、*、/、%、++、--
- 关系:
>、<、>=、<=、==、!=
- 逻辑:
&&、||、!
- 赋值:
=、+=、-=、*=、/=、%=
- 字符串连接:
+
- 条件/三目:
boolean?数1:数2
2. 分支结构:
基于条件执行某语句
- if结构:
1条路
- if...else结构:
2条路
Day04
- Scanner
接收用户输入的数据:-----分三步,先背下来,面向对象第5天才能理解
2. 分支结构:
- if...else if结构:
多条路
- switch...case结构:
多条路
优点:效率高、结构清晰
缺点:只能对整数判断相等(char, byte, short, int, enum, Character, Byte, Short, Integer, String)
break:跳出switch
3. 循环:
反复多次执行一段相同或相似的代码
4. 循环三要素:
- 循环变量的初始化
- 循环的条件(以循环变量为基础)
- 循环变量的改变(向着循环的结束变)
> 循环变量:在整个循环过程中所反复改变的那个数
5. 循环结构:
- while结构:
先判断后执行,有可能一次都不执行
- do...while结构:
先执行后判断,至少执行一次
> 当第1要素与第3要素相同时,首选do...while--------参考Guessing猜数字小游戏
Day05
1. 循环结构:
- for结构:
应用率最高,与次数相关的循环
2. 三种循环结构的选择规则:
- 先看循环是否与次数有关:
- 若有关-----------------------------------------------直接上for
- 若无关,再看要素1与要素3是否相同
- 若相同------------------------------------------直接上do...while
- 若不同------------------------------------------直接上while
break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环
3. 嵌套循环:
- 循环中套循环,一般多行多列时使用,常常外层控制行,内层控制列
- 执行规则:外层循环走一次,内层循环走所有次
- 建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
- break只能跳出当前一层循环
4. 数组:
- 是一种数据类型(引用类型)
- 相同数据类型元素的集合
- 定义:
- 初始化:
- 访问:
- 通过(数组名.length)可以获取数组的长度(元素个数)
- 通过下标/索引来访问数组中的元素,下标从0开始,最大到(数组的长度-1)
- 遍历:
5. 补充:
1. 变量的重名问题:
- 作用域重叠时,变量不能同名
2. break可以用在switch中,也可以用在循环中
continue只能用在循环中
3. \t:水平制表位,固定占8位
4. 数组元素的默认值:
byte,short,int,long,char------------------0
float,double------------------------------0.0
boolean-----------------------------------false
5. ArrayIndexOutOfBoundsException:数组下标越界异常
Day06
1. 数组:
- 复制:
- 排序:
2. 方法:函数、过程
- 封装一段特定的业务逻辑功能
- 尽可能独立,一个方法只干一件事
- 方法可以被反复调用多次
- 可以减少代码重复,有利于代码维护
- 何时用:假设有一个功能,在很多地方都得使用,就将功能封装到一个方法中
3. 方法的定义:五要素
修饰词 返回值类型 方法名(参数列表) {
方法体------具体的业务逻辑功能实现
}
4. 方法的调用:
- 无返回值:方法名(有参传参);
- 有返回值:数据类型 变量 = 方法名(有参传参);
5. return:
- return 值; //1) 结束方法的执行 2) 返回结果给调用方-------用在有返回值的方法中
- return; //1) 结束方法的执行--------------用在无返回值的方法
6. 补充:
1. 形参\实参:
形式参数,定义方法时声明的参数叫做形参
实际参数,调用方法时传的参数叫做实参
Ooday01
1. 什么是类?什么是对象?
- 现实生活是由很多很多对象组成的,基于对象抽出了类
- 对象:软件中真实存在的单个个体/东西
类:类型/类别,代表一类个体
- 类是对象的模板,对象是类的具体的实例
- 类中可以包含:
- 对象的属性/特征-----------------------------成员变量
- 对象的行为/动作/功能---------------------方法
- 一个类可以创建多个对象
2. 如何创建类?如何创建对象?如何访问成员?
3.方法的签名:
方法名+参数列表
4. 方法的重载(overload/overloading):
-------------------更方便方法的调用
- 发生在同一类中,方法名相同,参数列表不同
- 编译器在编译时会根据方法的签名自动绑定方法
5. 补充:
1. OO:面向对象
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程------------------你们所参与的
2. 高质量的代码:
复用性好、扩展性好、维护性好、可移植性好、健壮性好、可读性好、效率好......
3. 类是一种引用数据类型
// 引用
// 数据类型 引用类型变量 指向 对象
Student zs = new Student();
4. 默认值:
byte,short,int,long,char-----------------0
float,double-----------------------------0.0
boolean----------------------------------false
引用类型----------------------------------null
5. 文档注释:
描述整个类、整个方法、常量是干什么的。一般写在类上面、方法上面、常量上面
文档注释是可以生成javadoc文档内容的-----doc文档后期才讲
Ooday02
- 构造方法:
构造函数、构造器、构建器----------------复用给成员变量初始化代码
- 作用:给成员变量赋初始值
- 与类同名,没有返回值类型(连void都没有)
- 在创建(new)对象时被自动调用
- 若自己不写构造方法,则编译器默认提供一个无参构造方法,
若自己写了构造方法,则不再默认提供
- 构造方法可以重载
- this:
指代当前对象,哪个对象调用方法它指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
- this.成员变量名--------------访问成员变量
> 当成员变量和局部变量同名时,若想访问成员变量则this不能省略,其它一般省略
- this.方法名()------------------调用方法(一般不用,了解)
- this()----------------------------调用构造方法(一般不用,了解)
- null:
表示空,没有指向任何对象。若引用的值为null,则该引用不能再进行任何点操作了,若操作则发生NullPointerException空指针异常。
- 补充:
1. 成员变量和局部变量是可以同名的,但是使用的时候默认采取的是就近原则
2. 内存管理:由JVM管理
- 堆:new出来的对象(包括成员变量)
- 栈:局部变量(包括方法的参数)
- 方法区:------------周五再讨论
3. 基本类型变量中装的是具体的数,引用类型变量中装的是堆中对象的地址
Ooday03
1. 引用类型数组:
- 给引用类型数组的元素赋值时,必须得new个对象
- 若想访问对象的数据/调用方法,需要通过数组元素去打点
2. 继承:
- 作用:代码复用
- 通过extends来实现继承
- 超类/父类:共有的属性和行为
派生类/子类:特有的属性和行为
- 派生类可以访问派生类的+超类的,而超类不能访问派生类的
- 一个超类可以有多个派生类,但一个派生类只能继承一个超类-----单一继承
- 具有传递性
- java规定:构造派生类之前必须先构造超类
- 在派生类构造方法中若没有调用超类构造方法,则默认super()调超类无参构造方法
- 在派生类构造方法中若自己调用了超类构造方法,则不再默认提供
> 注意:super()调用超类构造方法,必须位于派生类构造方法的第一行
3. super:
指代当前对象的超类对象
super的用法:
- super.成员变量名------------------------访问超类的成员变量(一般不用,了解)
- super.方法名()----------------------------调用超类的方法------------------明天下午讲
- super()--------------------------------------调用超类的构造方法
Ooday04
1. 向上造型:
- 超类型的引用指向派生类的对象
- 能点出来什么,看引用的类型-------------这是规定,记住就可以了
2. 方法的重写(override/overriding):
重新写、覆盖
- 发生在父子类中,方法名相同,参数列表相同
- 重写方法被调用时,看对象的类型-------这是规定,记住就可以了
- 重写需要遵循"两同两小一大"原则:-------了解,一般都是一模一样的
- 两同:
- 方法名相同
- 参数列表相同
- 两小:
- 派生类方法的返回值类型小于或等于超类方法的
- void和基本类型时,必须相同
- 引用类型时,小于或等于
- 派生类方法抛出的异常小于或等于超类方法的---------------API时讲
- 一大:
- 派生类方法的访问权限大于或等于超类方法的---------------下次课讲
3. 重写与重载的区别:
- 重写(override/overriding):
- 发生在父子类中,方法名相同,参数列表相同
- 重载(overload/overloading):
- 发生在同一类中,方法名相同,参数列表不同
- 补充:
1. 继承要符合is(是)的关系
2. 超类的意义:
- 封装共有的属性和行为------------------代码复用