javaSE复习总结
之前匆匆忙忙学完了java,后来又接着学习ee,然而,越是想要快一点最后反而会更慢一点。因为匆忙间 我几乎什么都没学会。在后面的学习中实在非常吃力。就把javase
的视频大部分又重新看了一遍。真的收获挺大的。但是我有一个坏毛病,心浮气躁,还是在赶进度。于是好不容易理解的东西又快忘了。se已经复习完。赶快整理一下。
1、方法的重载:
方法的重载是方法名相同,方法的参数列表不同(参数的个数不同或者参数的类型不同,或者两者都不相同)。与返回值类型无关。
这里可以想到:类的有参和无参构造方法就用到了重载
2、方法的重写:
方法的重写是方法名和方法的参数都要相同。一般是子类继承父类后重写父类中的方法。
3、数组中的注意点:
声明数组仅仅给出了数组名字和元素的数据类型,要想真正使用数组还必须为它分配内存空间,即创建数组,为数组分配内存空间时必须指明数组的长度。
4、java的内存分配:
栈: 存放局部变量 (局部变量:在方法中定义的变量或者是方法声明上定义的变量) (栈中数据使用完毕就消失)
堆: 存放所有new出来的 (堆中 每一个new出来的东西都有地址,每一个变量都有默认值,byte short int long 默认值为0, float,double的引用值是0.0, char的引用值是'\u0000', boolean的引用值是false, 引用类型的默认值是null)----------------------数据使用完毕后在垃圾回收器空闲的时候回收。
方法区:???
本地方法区: (系统相关)
寄存器: (CPU使用)
5、数组操作中的异常:
ArrayIndexOutOfBoundsException:数组索引越界异常
NullPointerException:空指针异常
6、java中的参数传递问题:
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数——————————————******************************************这里补充列子等
7、成员变量和局部变量的区别:
在类中的位置不同:成员变量在类中方法外;局部变量在方法内或者方法的声明上
在内存中的位置不同:成员变量在堆中;局部变量在栈中
生命周期不同:成员变量随着对象的存在而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同:成员变量有默认初始化值;局部变量没有初始化值,必须先定义,赋值才能使用*****************************这里测试一下在方法内的局部变量是不是要先赋值
8、成员变量的名称可以和局部变量一样。在使用的时候先找小范围再找大范围
9、匿名对象的两种使用方法:
在对象调用方法仅仅一次的时候使用
作为实际参数传递
10、private:(被private修饰的成员只有在本类中才能访问)
这里在后面经常用到,但是在没复习之前完全不知道是什么情况,一脸萌币!!!!!就是成员变量在用private私有之后外界无法访问,但是为了能够访问,提供了getXxxv()和setXxxx()方法
11、构造方法的作用:
作用是:给对象的数据进行初始化
12、Student s = new Student():做了哪些事情:
1)将Student.class文件加载到内存
2)在栈内存为s开辟空间
3)在堆内存为学生对象申请空间
4)给Student的成员变量进行默认初始化(eg:name:null age:0)
5)给Student的成员变量进行显示初始化(name:xx age:12)
6)通过构造方法给成员变量进行初始化(这里是带参构造)
7)对象构造完毕,把地址赋给s变量
13、static
a:可以修饰成员变量和成员方法
b:随着类的加载而加载
c:优先于对象而存在
d:被类的所有对象所共享
e:既可以通过对象名来调用也可以通过类名来调用
f:静态的内容在方法区的静态区
g:在静态方法中没有this对象(this代表当前类的引用对象,而静态是随着类的加载而加载的,那时候还没有this)
h:静态只能访问静态
14、静态变量和成员变量的区别:
所属不同:静态变量属于类,是类变量; 成员变量属于对象,对象变量,实例变量
内存中位置不同:静态变量在方法区的静态区; 成员变量在堆内存中
生命周期不同:静态变量是随着类的加载而加载,随着类的消失而消失; 成员变量,随着对象的创建而存在,随着对象的消失而消失
调用不同:静态变量可以通过对象名调用也可以通过类名调用,成员变量只能通过对象名调用。
15、Math类
没有构造方法,因为它的成员都是静态的
产生1--100之间的随机数:int number = (int)(Math.random()*100)+1;
16:代码块
局部代码块:用于限定变量的生命周期,及早释放,提高内存利用率
构造代码块:把多个构造方法中相同的代码块可以放到这里,每个构造方法执行之前,首先执行构造代码块***************************************不记得了
静态代码块:对类的数据进行初始化,仅仅执行一次
执行顺序:静态代码块>构造代码块>构造方法
17、继承:
java中类只支持单继承,但是可以有多重继承体系
接口可以继承多个接口************************************
子类不能继承父类的私有成员
子类不能继承父类的构造方法,但是可以通过super去访问
18、子类的方法访问变量的查找顺序:
在子类的局部范围内找,有就使用
在子类的成员范围内找,有就使用
在父类的成员范围内找,有就使用
找不到就报错
19、
子类的构造方法默认会去访问父类的无参构造方法(是为了子类访问父类数据的初始化:因为子类会继承父类中的数据,可能还会使用父类中的数据,所以子类初始化前,一定要先完成父类数据的初始化)
父类中若没有无参构造,子类通过super去明确调用父类的带参构造(子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造)
20、final
修饰类:类不能被继承
修饰成员变量:变量为常量,只能赋值一次
修饰方法:方法不能被重写
21、多态成员的访问特点:(记着孔子装爹的例子*)
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行看左边(所以说静态方法的重写不能算方法的重写)
class Fu{
public int age = 40;
public void teach(){
syso("javaEE");
}
}
class Zi extends Fu{
public int age=10;
public void teach(){
syso("javaSE");
}
public void playGame(){
syso("game");
}
}
(向上转型)
Fu fu = new Zi();
syso(fu.age);--------40 成员变量编译和运行都看左边
syso(fu.teach);------javaSE 成员方法,编译看左边,运行看右边(这里只能调用Zi中的方法)
syso(fu.palyGame);X 这样是不行的,编译时无法通过,因为编译看左边,但是左边的Fu中没有palyGame方法
(向下转型)
Zi zi = (Zi)fu; ( 因为 Fu fu = new Zi(); 所以可以向下转 )
syso(zi.age);------10
syso(zi.teach);-----javaSE
syso(zi.playGame);---game
回去睡觉了。加*******的地方明天修改和复习清楚
javaSE复习总结的更多相关文章
- javaSE复习之——线程
线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CP ...
- JavaSE复习日记 : 算是个小前言吧
/* * Java也学了好久了,抽个时间整理了一下课堂笔记,也有些是我刚开始学会犯的一些错误.在这里浅谈一下JavaSE的基础内容,对我来说也是一种不错的复习方式. * * 那好,对于初学者来说,学习 ...
- JavaSE复习巩固
第二天:复习if语句,扫描器,switch语句,循环语句 1.if语句---流程控制语句 if之前学的语句是顺序结构 1.1 单个if的语法结构 if(条件判断){ 满足条件需要做的事情: } int ...
- JavaSE复习总结之集合(Collection)
Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...
- JavaSE复习_8 泛型程序设计
今晚看了core Java的泛型部分,万万没有想到,当时看培训班视频入门的一带而过的泛型,有这样多的细节,整理了一下书里面提到的一些自认为的重点,方便以后观阅.由于是复习,一些基础知识跳过. △泛型类 ...
- JavaSE复习日记 : 方法的调用和方法的重载
/* * 方法的调用和方法重载 */ /* * 什么是方法? * 方法就是一个有名字的代码段; * 方法的调用: * 在方法里调用另外一个方法里面的东西就是方法调用; * 或者可以认为"另外 ...
- JavaSE复习日记 : 循环终止语句(break/break outerFor/continue)
最近没网,但攒了几天的博客,这次逮到机会发博客,直接三篇走起; /* * 循环终止语句: break/ break outerFor/ continue */ /* * break语句 * 1. 用于 ...
- JavaSE复习日记 : 接口
/* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...
- JavaSE复习日记 : 抽象类
/* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...
随机推荐
- javascript AOP
Function.prototype.bind = function(b) { var a = this; return function() { a.apply(b, arguments) } }; ...
- Jquery Validate 正则表达式实用验证代码常用的
jQuery.validate 的正则验证功能,包括手机号码.电话号码.邮政编码.QQ号码.IP地址.字母和数字.中文的验证等 手机号码验证 以下为引用内容: 代码如下: jQuery.validat ...
- MapReduce深度分析(一)
MapReduce深度分析(一) 一.数据流向分析 图为MapReduce数据流向示意图 步骤1.输入文件从HDFS流向到Mapper节点.在一般情况下,存储数据的节点就是Mapper运行的节点,不需 ...
- jQuery 处理TextArea
jQuery 处理TextArea: $('#btn001').click(function(e) { console.log("btn001Click"); var cmt = ...
- pureMVC简单示例及其原理讲解二(Model层)
本节将讲述Model层. Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy. UserVO中的构造器用于初始化用户的添加(通过email和密码),另 ...
- SVGEditor
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HDU5882
Balanced Game Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- POJ1753 搜索
Flip Game Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on ...
- Xcode自带iOS测试方法
在说Xcode自带测试方法前先讲下程序在内存中的空间划分, 一般可分为5个部分: #1. BSS段, 存放未初始化的全局变量. BSS是英文Block Started by Symbol的简称.BSS ...
- LinkedList底层实现,及其数据结构实现。
LinkedList底层的实现基于双向表 prev data next next指向下一个node的地址.prev指向上一个node. 这里的代码是LinkedList类的源码. private st ...