java学习记录
1,接口(不实现任何方法)——》抽象类(实现部分公共方法)——》简单实现类——》具体实现类
2,抽象类不能被直接实例化,只能实现抽象方法,以匿名内部类的方式表现。
3,如果static是写在单例中,高并发访问是会出问题的,这时候就要设置线程等待了,static是在容器加载的时候就已经加载到内存中,所以static方法和变量不宜过度使用,有选择的使用,
4,&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不 执行了,而&则还是继续执行,直到整个条件语句执行完为止。如&&例子中的i++>5被执行了,而i++<9并没有 被执行,这就是他们的差别。&例子中的i++>5和i++<9都被执行了。
&还可以用作位运算符,0x31&0x0f=0x01
===> 0011 0001 & 0000 1111 = 0000 0001 即0x01
5,java中"=="和"equal"的区别。
- str == null和null == str 区别在于前者你少写个等号是赋值不会报错后者会报错
- "".equal可以回避空指针异常
- ==比较的是地址,equals比较的是值
- equals 是比较的两个字符串是否一样 ,比如 “asd”.equals(“asd”)==true;
- "==" 它比较的是两个“引用” ,比如: String a=new String ("a"); String b=new String ("a"); System.out.println(a==b)它就输出false了。
因为不是一个引用(虽然都是a);
- String a=new String ("abc");至少创建一个对象a;a是肯定会被创建的。如果内存里没有"abc"字符串对象就创建一个,否则不创建。
6,final、finally、finalize的区别
final是一种声明属性,作用与类、方法和变量;final修饰的变量的值不能够再改变,final修饰的方面不能被覆盖,final修饰的类不能被继承。
finally是异常处理语句的一部分,表示总是执行。
finalize是object类的一个子方法,在垃圾回收器执行是调用回收对象的此方法,此方法可以被覆盖提供资源回收时的其他资源回收。如文件关闭等
7,int是java的基本数据类型,Integer是java为int提供的封装类,用于在各种类型间转化
8,sleep()和wait()的区别
1,sleep是thread的方法,会释放对象锁,当指定的时间到了又会自动恢复运行状态。wait()是object的方法,不会释放锁,且只有调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
9,静态代码块,代码块,构造函数
1,静态代码块:只会运行一次,无论new多少个对象,都只执行一次
2,代码块:new每个对象,都会执行这个代码块
3,构造函数:new每个不同的对象,针对性的执行。比如有参数,无参的,参数不同的。
10,java对象的创建过程
1,创建虚拟机进程,然后虚拟器用类加载器Class Loader加载.class文件到方法区。
2,类加载完成后,主线程运行static main()时在虚拟机栈中建栈帧,压栈;执行到new Object()时,在堆heap里创建对象
3,执行类的构造函数初始化
4,new运算符 返回堆中这个对象的引用。
11,throws和throw的区别
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象
12,try {}里有一个 return ,紧跟着在这个try之后的finally{}会不会被执行?
——会,在return过程中执行。解释:在执行return语句时,要返回的结果已经准备好了,并会把结果放在另外一个局部变量中。此时,程序转到finnaly执行,执行后再把存在这个变量中的结果取出返回。所以如果finally中修改了返回结果,但实际上返回结果不会变。应该是使用栈保存的返回值。
13,堆:存放所有new出来的对象。栈:对象的引用。常量池:存放基本类型常量和字符串常量。
14,反射:
1,反射机制指的是程序在运行时能够获取自身的信息,实现动态创建对象和编译,比较灵活。缺点是对性能有影响。
2,.class-->.java
3,通过反射机制访问java对象的属性,方法。
依赖注入:在运行期,由外部容器spring动态地将依赖对象注入到组件中
控制反转:spring容器初始化,创建并管理bean对象,以及销毁它
java学习记录的更多相关文章
- Java 学习记录
•Eclipse相关 Eclipse常用设置 解决 Eclipse 项目中有红色感叹号的详细方法(图文) JRE System Library [JavaSE-1.8](unbound) •Java ...
- Java学习记录第一章
学习Java第一章的记录,这一章主要记录的是Java的最基础部分的了解知识,了解Java的特性和开发环境还有Java语言的优缺点. 计算机语言的发展大概过程:机器语言--->汇编语言---> ...
- Java学习记录 : 画板的实现
接触java不满一个月,看厚厚的java入门简直要醉,故利用实例来巩固所学知识. 画板的实现其实从原理来说超级简单,可能一会儿就完成了. 但作为一名强迫症患者,要实现和win下面的画板一样的功能还是需 ...
- JAVA学习记录(一)————JAVA中的集合类
这个图是总体的框架图,主要是两个接口Collection和Map都继承接口Iterator(Iterable),为了实现可以使用迭代器.Collection和Map类似平级关系. 1.这里我先学习下A ...
- JAVA学习记录<一>
一: JAVA初体验: 1.JAVA简介: 2.环境搭建: 3:MyEclipse的使用简介: 4:程序的移植:项目的导入,导出. 5:学习JAVA的经验: 多写,多问,总结和复习!!!
- Java学习记录-Jdk包简单介绍
java.applet Java语言编写的一些小应用程序 java.awt AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交 ...
- Java学习记录-注解
注解 一.org.springframework.web.bind.annotation ControllerAdviceCookieValue : 可以把Request header中关于cooki ...
- Java学习记录:降低耦合度
耦合度定义 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少. 模块间的耦合度是指模块之间的依赖关系,包括控制关系.调用 ...
- Java学习记录:文件的输入输出流
Java中的输入.输出流中可以用于文件的读写,拷贝. 由于文件都是由字节组成的,可以将文件中的内容以字节的方式读取出来. 输入流还可以直接转换为图片来使用.其实ImageIcon提供了方法可以直接打开 ...
随机推荐
- visio UML用例里面找不到include关系
今天用Microsoft Visio 2007画用例图时,发现visio UML用例里面找不到include关系,查到一个可行的解决办法: 1)创建一个UML用例图模板:打开Microsoft Vi ...
- FpGrowth算法
FpGrowth算法 频繁项集与关联规则挖掘(2)--FpGrowth算法 上一篇介绍了关联规则挖掘的一些基本概念和经典的Apriori算法,Aprori算法利用频繁集的两个特性,过滤了很多无关的 ...
- Use weechat (IRC client) on OS X. MacBook Pro
Weechat is a console IRC client. It is opensource and very easy to use. I use weechat in my Linux PC ...
- VS2012编译LibZip库
LibZip库是解压缩zip文件的C库. 中文的网站目前还没有找到相关的编译方法,找了一篇英文文档加上自己的实验修改了一下: 编译步骤如下: 首先先下载CMake,我下载的是2.8版本. libzip ...
- 添加第三方类库造成的Undefined symbols for architecture i386:编译错误
1.原因: 如果是源码编译的话,一般就只某些头文件没有添加到src编译里面.但是对于添加库编译,一般是库的编译路径设置不正确(比如arm的版本.模拟器或者真机的不同版本库引用错误或者重复引用一起编译器 ...
- Linux内核 hlist_head/hlist_node结构解析
内核中的定义: struct hlist_head { struct hlist_node *first;}; struct hlist_node { struct hlist_node ...
- ajax获取后台传递的json数据
最近在使用JQuery的ajax方法时,需要返回的数据为json数据,在success返回中数据处理会根据返回方式不同会采用不同的方式来生成json数据.在$.ajax方法中应该是如何来处理的,简 ...
- C#中的StringBuilder
1. 使用StringBuilder的好处 由于string对象是不可更改的,我们每次使用string类的方法时,都会在内存中重新创建一个新的string对象,这时候就要为该对象分配内存空间了.如果在 ...
- Thymeleaf 笔记
th:each=”aname : ${namelist}” th:if=”${name} == ‘SERVICED’” 页面使用Map集合 <div th:each="osl : ${ ...
- 手机无须ROOT不用修改hosts即可在本地测试安卓、苹果APP和H5应用
开发手机APP和 H5 应用经常需要在本地和线上环境分开测试,一般想到的操作都是修改hosts,我也一直这么干的,但手机上修改hosts是需要 ROOT权限的,这样太过麻烦,还有变砖头的风险,而且有些 ...