Java基础复习笔记系列 二
1、Java中Static的相关用法总结?(静态方法;静态变量;静态代码块)
public static void main(String args[])执行的关键,在于有static。有了static之后,我们的public class不需要创建类的对象,即可以使用main方法。所以,引入了static,无需本类的对象,即可调用此方法。System.out.println,在系统这个方法中,我们查看API,可以得到out是System类的静态变量,println是out的方法。
静态变量,多一个知识点。所有类的实例化对象共享该静态变量。也就是说,类装载的时候,只分配一块儿存储空间,所有此类的对象都可以操控此存储空间。
2、Java中内部类和外部类总结?
一个类,只能有成员变量或者成员方法。
3、Java中的引用怎么理解?
Java中除了基本数据类型,剩余都是引用类型。基础类型就一块儿内存;引用类型占两块儿内存。
4、Java中的变量初始化问题?什么时候必须初始化?什么时候Java会自动初始化?
成员变量和局部变量。成员变量可以是基本数据类型,也可以是引用类型。成员变量即使不做初始化,Java会默认对它进行初始化,基本数据类型初始化为0和false,引用类型初始化为null。局部变量,必须自己来初始化。Java不会对其进行初始化。
5、JVM内存模型的理解?(内存分析)
堆内存:装的是所有new出来的东西。引用指向堆内存。
局部变量放在stack中。ArrayList aL = new ArrayList();aL在stack中,new出来的在Heap中。
字符串常量放在Data区,如:System.out.println("the final ali is " + i);中的the final ali放在data区。
6、Java中类的理解?(四块:code,data,heap,stack)
类名大写,变量和方法名小写。使用驼峰规则。
类的每个成员变量,在不同的对象中有不同的值(除了静态变量)。而方法只有一份,同一个类的每个对象共享该类的方法。
7、Java特性有哪些?多态、重载、覆盖做一些简单解释。
Java三大特性:封装、继承、多态。
多态,分为编译时多态和运行时多态两种。
第一种,编译时多态,就是指我们调用方法不用区分参数的类型,程序会自动执行相应的方法。int;double;(重写)
第二种,运行时多态,就是指父类引用指向之类对象。当调用某一父类中的方法时,不同子类会表现出不同的结果。这样对于程序的扩展性起到了很重要的作用。狗继承自动物,狼也继承自动物,但是一个吃肉,一个吃屎,不一样。当你有一天也想写一个类来继承动物的时候,可以写自己的吃方法。(重载)
重载的话,我们知道参数变更早就了多态。那么在重写的时候有一些原则,子类重写父类,要跟父类有相同的名称,参数,返回值;并且重写后的访问权限只能大于等于父类的方法。
8、一个构造方法到底做了些什么?(执行过程)
构造方法,和类同名,没有返回值。构造方法甚至不能用void修饰,否则会变为普通的函数,但可以用public,private,protected,default来修饰,不用static来修饰。(观察方法:看它名称;看它参数;看它返回值)
局部变量,也就是实参会分配在栈内存中。对象则会被分配在堆内存中,调用构造方法的时候,将栈内存中的值传递到堆内存中去,同时栈内存之前分配的内存被回收。
默认构造函数,Java会自动的给你定义无参的构造方法。一旦你自己写了一个构造方法,不管你写的是有几个参数的构造方法,系统不再为你定义构造方法了。即使无参的构造方法,系统也懒得给你定义。
9、this关键字的使用?
创建对象是在堆内存中。this相当于在堆内存中的一个框框内,本框框内的对象。
10、static关键字的使用?
对所有类的对象,static成员变量只有一份。(堆、栈、data)static静态变量是放在data区。它是属于整个类的,不属于某一个对象。类可以直接访问,不同对象访问的是同一个static变量。
静态方法只能访问静态变量。在static方法中,不能访问非static变量。
/********************************************************************************************************/
11、Java中是四种权限修饰符的阐述,留意在编程中public,protect,default,private的使用。
public,protect,default,private四种修饰符。在面向对象编程思想中提供了封装,分别设置了不同的权限高低,提高了程序的安全可靠性。
default提供了包权限,即Java中使用package对代码层次结构做了封装。我们以default为分界线,default提供了包权限,那么在同一个包下,可以访问。根据他们四个的权限范围,很显然。private在一个类内可以访问,在包内类外是不可以访问的。你想想,如果类内也不能访问的话,变量失去了意义。在范围往大了扩展,依次是protected和public,public很显然,任何地方都能访问,那么,很显然protect是在包外,子类中可以访问。以上是我们的大脑思维的过程。
总结:default,包内。private,类内,包内。protect,包外,子类。public,任何。
12、extends实现类,implements实现接口。在继承了父类方法,之类调用方法的时候产生了四种情况?
this.和super.;分别调用了子类和父类。this和super都会在堆栈中创建一块儿内存,this指向自身。super指向自己身体中的父类。子类对象new出来的时候,在子类对象内部,有一个父类对象。所有有了几个规则:调用子类对象构造函数的时候,首先要调用父类的构造方法。(种子天性说):super(args[])调用父类构造方法,this(args[])调用子类自己构造方法。如果调用了super的构造方法,必须写在子类中的第一行。
多态中,方法调用的优先级:
13、子类继承父类的时候,在堆内存中是如何布局分配内存空间的?
Heap堆中new的之类的其中一部分是父类。父类作为种子在子类的身体之中,并且作为子类身体的一部分而存在;子类的范围比父类范围大。(子类把父类的私有变量继承了下来,但是不能使用。但是属于子类。)
14、对“父类引用指向子类对象”的理解?
Animal a = new Dog();栈中是Animal对象a,但是堆内存中new的却是Dog对象。(其中Animal可以是父类,也可以是一个接口)。其中涉及:多态、动态链接、向上转型。
15、根类Object有哪些方法?java.sun.com官网。
Object类在java.lang.Object里面。这个java.lang.*包不需要导入,也可以直接用。
.toString()方法;.equals()方法;
16、两个对象比较,比较的是什么?
Cat cat1 = new Cat();Cat cat2 = new Cat();cat1 != cat2,因为它们其实是两个应用,它们中存放的是对象的地址。
17、Java中instanceOf的用法?
运行状态下,返回某一个对象是否是一个特定类的实例。
18、关键字final的使用方法?
19、
Java基础复习笔记系列 二的更多相关文章
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 三
前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿. Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...
- JavaWeb前端基础复习笔记系列 二
课程:孔浩前端视频教程(JavaScript系列:1~5讲) <html> <head> <title></title> <!--html只负责显 ...
- Java基础复习笔记系列 十三 反射机制
主题:Java反射机制 学习资料参考网址: 1.http://www.icoolxue.com 1.Java反射机制. 各种框架中都使用到了Java的反射机制. 两个类:java.lang.Class ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
随机推荐
- fir.im Weekly - 如何用 iPad 创造技术生产力
传播学大师麦克卢汉有一个著名理论--「 媒介即讯息,媒介是人的延伸」,在当代,表现更为明显的是「工具即为人的延伸」,工具使人自由.那么,我们究竟需要什么样的工具释放技术生产力?本期 fir.im We ...
- Eclipse中java向数据库中添加数据,更新数据,删除数据
前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据. 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的信息) package com.ning ...
- POI生成WORD文档
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- Java并发包中Semaphore的工作原理、源码分析及使用示例
1. 信号量Semaphore的介绍 我们以一个停车场运作为例来说明信号量的作用.假设停车场只有三个车位,一开始三个车位都是空的.这时如果同时来了三辆车,看门人允许其中它们进入进入,然后放下车拦.以后 ...
- ssh(sturts2_spring_hibernate) 框架搭建之hibernate2
一.今天要进行解答的是对上次hibernate1进行进一步的完善,这次第一是进一步使用spring注入一个SessionFactory实例,避免了自己new实例:第二是应用数据库池(c3p0). 二. ...
- Mysql存储过程语法
一口气弄完了! 一.条件语句if-then-else: create procedure demo_1(in param int) begin declare var int; ; then inse ...
- Windows Azure Web Site (7) Web Site配置
<Windows Azure Platform 系列文章目录> 在上一章内容中,我们已经部署了Azure WebSite.我们可以在Web Site配置页面进行配置.如下图: 另外,我们还 ...
- RAID磁盘阵列的搭建(以raid0、raid1、raid5、raid10为例)
mdadm工具的使用 -C或--creat 建立一个新阵列 -r 移除设备 -A 激活磁盘阵列 -l 或--level= 设定磁盘阵列的级别 -D或--detail 打印阵列设备的详细信息 -n或-- ...
- 如何安装RHEL7.2x64 即红帽7.2虚拟机?
虚拟机RHEL7.2x64的安装步骤 第一步:创建虚拟机 第二步:典型安装下一步: 第三步:创建空的硬 ...
- 用Qt写软件系列五:一个安全防护软件的制作(1)
引言 又有许久没有更新了.Qt,我心爱的Qt,为了找工作不得不抛弃一段时间,业余时间来学一学了.本来计划要写一系列关于Qt组件美化的博文,但是写了几篇之后就没坚持下去了.技术上倒是问题不大,主要是时间 ...