发表于: 2020-05-23 22:02:49
1 1439
加油!!!
今天完成的事:复习并记录下前面的知识和一些细节问题
变量的作用域:有效范围在同一个大括号内;出了大括号无法访问{ int i=10 }
变量可以重新赋值,但是不能重复声明
int i=10;
i=100;但是不能 int i=100
成员变量(在类体中)与局部变量(在方法体中,包括形式参数)
public class test{
int i=10;int m;//成员变量
public void m2(int a= 10){//局部变量
int k=100;//局部变量
}
八种基本数据类型的默认值要记住
byte,short,int,long 0
float,double 0.0
boolean false
char '\u0000'
字符型 char 底层占用两个字节,一个字母占用一个字节,一个汉字占用两个字节
所以char可以用来储存一个汉字 char a='中';
long和int之间存在自动类型转换
long i=100//系统会默认i为int类型
long i=100L//后面加上L,就不存在了,只是赋值运算
强制类型转换需要加强制类型转换符,但是可能损失精度
byte,short,char做混合运算时,会先自动转换成int类型,再做运算
byte b =10; short c =100
int a= b + c;
三目运算符:boolean 表达式? 表达式1 :表达式2;
true:表达式1 false:表达式2
switch语句中,可以不写break和default,但是会发生case穿透现象
switch() {
case 'A' :java语句
break
case ‘B’:java语句
default:java语句
}
for循环
for(。。。){
for(。。。)
输出。。
方法的定义:就是一段代码片段,这个片段可以完成特定的功能,并且可以重复利用
如果一个方法的返回值类型不是void,那么在方法体中必须使用return 语句来返回数据。return语句一旦执行,则方法结束。
关于方法的重载
1、发生在同一个类中
2、方法名相同
3、参数列表不同,和返回值类型无关
4、和方法的修饰符列表无关
方法的执行原理:
方法在调用的时候,才会给该方法在内存中分配空间
方法在调用的时候在 栈 中分配空间(JVM内存中有一块内存是栈内存)
方法调用也称为压栈
方法结束也就是弹栈
以下程序因为递归没有结束条件,所以一直压栈,没有弹栈,导致栈内存溢出错误!所以递归必须要有结束条件
public class test(){
public static void main(String[ ] args){
m1( );
}
public static void m1( ){
m2();
}
}
面向对象的三大特性:封装,继承,多态
类是抽象的和对象是实际存在的(学生和张三)
类的修饰符+class +类名+{类体:属性和方法组成}
对象的使用:引用. 去间接访问堆中的对象(也叫 一个引用类型. 或者 局部变量.)
关于构造函数
作用:1、创建对象2、给成员变量赋值
基本数据类型中局部变量不会发生值的传递,但是引用数据类型中,在同一个类下,会发生值的传递(因为他们
栈中的内存地址不同,但是都指向堆中的同一个对象
可以用在哪里:1、可以用在成员方法中2、可以用在构造方法中
static关键字(静态变量、静态方法、静态语句块)
变量分类:
1、局部变量2、成员变量(非静态变量)3、静态变量
什么时候变量声明成静态变量?
如果这个属性所有的对象都有,并且这个属性的值都是相同的,则该属性声明成静态的属性
成员变量:创建java对象的时候初始化
静态变量:在类加载阶段赋值,且只赋值一次
静态变量被储存咋方法区中,是类级别的,所有java对象共享
单例模式
作用:1、为了保证JVM中的某一个类型的java对象永远只有一个2节省内存开销
分为类加载阶段创建和用到再创建
多态:
方法的覆盖中,私有方法无法被覆盖
super关键字(对比上面的this)
用在什么地方:1、用在成员方法中(不能用在静态方法中)2、用在构造方法中
1、不是引用类型,储存的不是内存地址,指向的不是父类对象
2、代表的是当前子类对象的父类型特征
3、什么时候用:子类和父类中都有某个数据,例如:子类和父类都有naem这个属性,
如果在子类中访问父类的这个name属性,需要用到super
final关键字
他 修饰的 类无法被继承、方法无法被覆盖、局部变量无法再改变,修饰的引用类型无法再指向其它对象
一般和static联用
https://www.cnblogs.com/dotgua/p/6357951.html
抽象类的定义:class前面加abstract,只能单继承extends
接口:interface 可以多继承
inplements 实现
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
语法格式
Object类:中的toString方法就是用来给我们重写的
引用类型中: == 比较的是两边的内存地址 (字符串不能用)
:equals( 写法:o1.equals(o2) )比较的是是否一样(key和value)
finalize:一般用于释放资源(该对象马上要被回收了)
hashCode方法:返回的是该对象的哈希码值(对象的内存地址经过哈希算法得到哈希码值)
package:为了解决类的命名冲突问题(语句放在.java源文件的第一行 eg:package com.ptt.javase.test01)
访问控制权限:public 缺省 protect private
四个内部类:静态 成员 局部 匿名
类和类之间的关系:泛化 实现 关联 聚合
异常机制:异常(不正常事件)
作用:程序发生异常后,为我们输出详细信息
分类:
处理的两种形式:1、throws 上抛
2、try...catch... 捕捉 printStackTrace打印
finally 用于处理异常后需要输出的内容
关于 final finalize finally区分
异常中的 FileNotFoundException
1、拒绝访问 2、系统找不到指定路径
https://blog.csdn.net/Sonny_w/article/details/81112736
数组Array(对比集合)
1、是一种引用类型
2、是一种数据结构,线性结构
3、是一个容器,可以用来储存其他元素,可以储存任意数据类型的元素
4、分为一维数组,二维数组 三维和多维数组
数组中第一个元素下标为0
数组中 sout 直接输出的是内存地址
二维数组:看作分行列的一维数组
初始化方式:1、静态初始化 2、动态初始化
它们在内存中的分布是一样的,知道储存什么数据选1,不知道选2
Scanner类:可以用来获取用户的输入
数组的排序:冒泡 选择
二分法查找:Arrays工具类
关于常量池
字符串缓冲区:
1、StringBuffer 线程安全的(多线程可用)
2、Stringbuilder 非线程安全的(多线程可能出问题)
和 String最大的区别:String是不可变字符串,存储在常量池中
注意默认值的不同
时间戳是指格林威治时间1970年01月01日00时00分00秒起至当下的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 在实际应用上, 它可以使用在包括电子商务、 金融活动的各个方面, 尤其可以用来支撑公开密钥基础设施的 “不可否认” 服务。
集合
IO流
字节流
字符流
类 实现 Seriallizable接口,JVM对他的特殊待遇是什么?
https://blog.csdn.net/heyanfeng22/article/details/90776663
多线程(Thread)
线程指进程中的一个执行场景,也就是执行流程,那么进程和线程的区别是什么?
1、每一个进程是一个应用程序,都有独立的内存空间
2、同一个进程中的线程共享其进程中的内存和资源
(共享的内存是堆内存和方法区的内存,栈内存不共享,每个线程有自己的)
多线程不是提高执行速度而是提高CPU的使用率
线程是进程中的执行场景,一个进程可以启动多个线程(进程>线程)
作用:多人同时访问百度
反射机制
作用:1、反编译: .class-->.java
2、通过反射机制访问java类的属性、方法、构造方法等
MySQL主要学习的sql语句
sql语句的分类:
DQL(数据查询语言):查询语句,凡是select语句都是
DML(数据操作语言):insert、delect、update,对表中的数据进行增删改
DDL(数据定义语言):create、drop、alter,对表结构进行增删改
TCL(事务控制语言):commit提交事务,rollback回滚事务,
DCL(数据控制语言):grant授权、revoke撤销权限等
select 5
...
from 1
...
where 2
...
group 3
...
having 4
...
order by 6
...
多表查询
明天的计划:学习深度思考和复习mybatis和spring,然后准备任务二
遇到的困难:
收获:通过任务一的学习,对使用mybatis和spring框架对数据库的增删查改有了一定的掌握,并且通过较大量数据的插入和查找对索引的使用有了更加清晰的感知
经验总结:任务一主要针对的是mysql,JDBC,mybatis和spring框架中较简单的部分的学习
但是在学习这些之前如果没有一定的java基础估计还是不能很好的能驾驭17步以后的内容,所以我建议还是先对java基础有一个大概的了解,然后再学习mysql,JDBC和后面的框架知识,这样能较快的理解并完成后面的内容。
评论