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是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...
随机推荐
- 用编程的方式定义UI界面
package com.example.administrator.test_hello_world; import android.app.Activity; import android.os.B ...
- Eclipse和debug的一些快捷键
F5单步调试进入函数内部. F6单步调试不进入函数内部,如果装了金山词霸2006则要把“取词开关”的快捷键改成其他的. F7由函数内部返回到调用处. F8一直执行到下一个断点. F11 这个好 ...
- 3. 托管对象模型的迁移(Core Data 应用程序实践指南)
本章介绍如何添加模型版本及模型映射,演示几种迁移技术,供在升级模型时使用. 3.1. 修改托管对象模型 3.2. 添加模型版本 3.3. 轻量级迁移方式 3.4. 默认的迁移方式 3.5. 通过迁移管 ...
- js架构设计模式——理解javascript中的MVVM开发模式
理解javascript中的MVVM开发模式 http://blog.csdn.net/slalx/article/details/7856769 MVVM的全称是Model View ViewMod ...
- Unity跨平台原理
An ahead-of-time (AOT) compiler is a compiler that implements ahead-of-time compilation. This refers ...
- MVC使用HandleErrorAttribute自定义异常
MVC中,有一个Filter可以捕捉错误,但是它的用法是利用Attribute来实现的,而且只能加在Controller和Action上,所以不能捕捉别出的错误 其实理论上所有的错误肯定产生于Cont ...
- 关于GCD同步组实现多个异步线程的同步执行中的注意点
在App开发中经常会遇到多个线程同时向服务器取数据, 如果每个线程取得数据后都去刷新UI会造成界面的闪烁 也有可能出现部分数据还没有获取完毕造成程序crash 之前在网上看到很多是利用dispatch ...
- HTML5本地存储 localStorage 和 sessionStorage 的基本用法及属性
localStorage 和 sessionStorage 的用法都是本地的存储和获取 但他们又有所区别, 1, sessionStorage 是一个短暂的本地存数,它会随着浏览器的刷新和关闭而消失, ...
- Swing JComboBox的使用
1:JComboBox的使用:类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JCom ...
- ArcGIS制图表达Representation-制图表达介绍
ArcGIS制图表达技术-制图表达介绍 by 李远祥 在基于GIS数据的制图中,大部分都是使用的数据+符号应用的这种模式.这种模式已经被应用很多年,而且也是非常成熟.对应在ArcGIS体系里面,就是数 ...