【Java】Java学习笔记



- 计算机所有的数据信息都是由二进制的0,1组成的,B(Byte)就是字节,1B=8bit(位),2的10次幂是1024,我们所说的硬盘容量是40GB、80GB、160GB,这里的B指是的Byte也就是“字节”。
1 KB = 1024 bytes =2^10 bytes
1 MB = 1024 KB = 2^20 bytes
1 GB = 1024 MB = 2^30 bytes
- 面对对象编程:先确定数据结构,在确定数据运算。
- 构造方法的名词和类名是一样的,构造方法没有返回值。
- 构造方法的成员变量的设置不要和类成员变量一样!
- new关键字:实例化对象,同时也会去调用匹配的构造函数 //为对象分配内存空间、引起对象构造方法的调用、为对象返回一个引用。
- this代表的是对象本身(实例化过的)
- 静态方法(static),可以直接用类名去调用方法 //静态方法=类方法,实例方法=其他方法 //变量同理
- 定义一个常量,使用final关键字 /声明的同时要进行初始化
- 类的继承:extends关键字。
- super关键字代表父类,可用于调用父类的方法、变量。 //继承中:子类new时 会先去调用父类的构造方法 //构造方法是不能被继承的,只能用super();
- 多态性。 //如果之类有这个方法就调用子类的,如果子类没有这个方法就调用父类的。
- instanceof关键字。 //实例名 instanceof 类名 //用于判断实例是否属于某类 //继承中:默认子类的实例属于父类,但父类的实例不属于子类
- main函数是static的,只能调用static的方法和成员变量。
======================================


- package语句必须在第一行 //前面只能是注释或空白行
- final类:终极类 //确保被继承时不会被子类覆盖
- 缺省方法(default):void 类名(){}
- Java中访问修饰符public、private、protecte、default的意义讲解:
- 抽象方法、抽象类(abstract):抽象类 - 抽象方法 - 没有方法体
public abstract class 抽像类名{
protected abstract void 抽象方法名();}
*继承某抽象类,该子类必须完成抽象类中的抽象方法的实现,否则该子类应定义为抽象类。 //子类要补上父类的坑
- native 方法 //到时候看下教程
=============================================
接口(interface)实现接口(implements) //类似于抽像方法和抽象方法的实现
*接口中定义的方法必须为public abstract 方法名
*所以实现接口的类中,实现接口中的抽像方法
package T3;
//接口sport,定义两个抽像方法(权限必须大于等于基类/实现类)

*接口类型的对象可以去调用接口类实现的方法。 //多做练习,理解下!!
定义一个接口,接口方法
接口类实现接口中的所有方法
B类定义一个接口类类型的变量,变量可直接去调用接口方法
*接口的继承:可以多继承;一个类可以继承多个接口。
===============================================
A类 - B类 //A是B的外部类;B是A的内部类;
*内部类可以访问外部类的私有成员变量
*在内部类中调用外部类的成员变量:A.this.成员变量名
*在main函数(与AB不同父类节点的),直接调用内部类:
*在外部内中定义一个方法,返回内部类类型,new一个内部类的实例,在去调用内部类的方法 //
。。。
Inner getInner(){
		return new Inner();
	}
class Test{
	public static void main(String[] args){
		Outer ou = new Outer();
		Outer.Inner in = ou.getInner(); //或者是Outer.Inner in = ou.new Inner();
		in.print();
	}
}
*静态成员函数不属于任何一个类对象,没有this指针。可以用类名代替。
*内部类与外部类建立起关系

*接口的内部类方法的调用
在接口实现类中定义一个new内部类的方法,再在main函数中实例一个接口类变量,调用该方法new一个内部类变量,再去调用内部类的方法。
。。。
Animal getAnimal(){
		return new Tiger();
		}
class TestAn{
	public static void main(String[] args){
		Zoo zo = new Zoo();
		Animal an = zo.getAnimal();
		an.eat();
		an.sleep();
	}
}
*定义的方法也可返回接口,但要在;前完成接口中的方法实现,不然不能直接调用。 //把这个类(接口在这实现了成为类,or随便命名一个新的类在这实现)称为匿名内部类
//内部类可以随意的访问外部类的成员,但外部类要产生一个内部类的实例去访问内部类的成员。

====================================================
Java的异常处理机制try/catch/finally
try{}
catch(Exception e){}
*getMessage()、toString()方法去获取异常信息 //e.getMessage()、e.toString()
*printStackTrace() 打印出异常信息 //e.printStackTrace();
*如果知道了异常类型,Exception可以直接写异常名。
*抛出一个异常 throws Exception //如果不去捕获的话,要逐级向上都要抛出,知道main函数抛出较大java异常处理机制。//可以抛出多个异常
*如果是要在某一步进行异常捕获的话,捕获的异常类型要和抛出异常类型一致!
*可以多个catch语句(异常类型要从具体到一般)
*捕获异常时也可以继续抛出异常(对象) 如throw e //逐级向上还是要继续捕获异常或者抛到最后的main函数
*也可以自定义一个异常 //定义一个异常(类)继承Exception
class JennysException extends Exception{
	JennysException(String str){
		super(str);
	}
}
调用自定义的异常:if (b<0) throw new JennysException("Blah");
*finally语句放在最后,不管如何都要执行的。//除了使用System.exit(-1)去停止程序的运行。
*子类的方法抛出的异常范围应该小于等于父类的
===============================================

数组定义并且初始化:int[] num1=new int[]{X,Y,Z}
*System.arraycopy(src, srcPos, dest, destPos, length) //数组一的值复制到数组2;src/dest 数组一/数组二;srcPos/destPos 两数组的复制起点
*一旦拷贝,两个数组是共用一个内存的。
*Java中的循环
for (int i=0;i<num2.length;i++){
			System.out.println(num2[i]);
		}
*数据排序:Arrays.sort(数组名字); //升序
*定位数组中的数据:int index = Arrays.binarySearch(数组名, 要定位的变量值); //index取出来是该变量在数组中的位置下标值
*num>s.num?1 : num==s.num?0 :-1; //如果大于返回1,如果等于返回0,否则返回-1;
*数组类型定义的两个方法toString(输出),compareTo(以哪个值为标准进行比较)//main函数中Arrays.sort排序要用到的规则


*要进行类型转换,要先转换成integer类型,再利用integer的方法去进行转换。 //String的变量要用双引号。

*Java自带的名为Class的类。先使用getClass去取得这个类,再使用它的getName方法去取类名。
Pointt po = new Pointt();
		Class c1 = po.getClass();
		System.out.println(c1.getName());
*或者使用Class的forName(类命)方法,但要考虑异常处理;也可以使用类名.class去赋值Class类型变量,再变量调用getName方法
*Pointt p1 = (Pointt)c1.newInstance(); //强制转换成Pointt类型再赋值给p1
*反射API (不理解)
*Runtime类,他是一个与JVM运行时环境有关的类;//exec方法可以调用一个外部方法

*Process类中InputStream类提供一个输入流的方法getInputStream(); //不理解,进程信息没打印出来。
*单例类
============================================================
只有String可以进行+,+=好操作(可以和其他类型的一起做+,+=)
StringBuffer处理更长的字符串 //StringBuffer jen = new StringButter("jennyhui");
append //jen.append("1").append("blah").append(1);
delete(起始索引位置,终止索引位置) //jen.delete(5, 8);
insert //jen.insert(5, "brown");
x.length (x的元素个数大小)
============================================================
数组初始化:
public static void change(int[] num){。。} //以数组为参数的函数change
int[] num = new int[]{3,4}; //数据num的实例初始化
函数参数的初始化:
Point pt = new Point(); //类Point的参数pt,实例初始化一个空间
System.out.println(pt); //直接打印对象,它会去调用这个对象的toString方法,返回这个对象的描述 //可以取重写toString方法
*java的clone方法 有点不太明白啊啊啊啊



============================================================
【Java】Java学习笔记的更多相关文章
- 20145213《Java程序设计学习笔记》第六周学习总结
		20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ... 
- [原创]java WEB学习笔记95:Hibernate 目录
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
- java JDK8 学习笔记——助教学习博客汇总
		java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ... 
- java JDK8 学习笔记——第16章 整合数据库
		第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ... 
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
- Android(java)学习笔记267:Android线程池形态
		1. 线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ... 
- java多线程学习笔记——详细
		一.线程类 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ... 
- Android(java)学习笔记207:开源项目使用之gif view
		1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationVie ... 
- Android(java)学习笔记71:生产者和消费者之等待唤醒机制
		1. 首先我们根据梳理我们之前Android(java)学习笔记70中关于生产者和消费者程序思路: 2. 下面我们就要重点介绍这个等待唤醒机制: (1)第一步:还是先通过代码体现出等待唤醒机制 pac ... 
随机推荐
- java字节码理解-入门
			前记:作为一名JAVA Developer,每次打开Eclipse,查找一个没有源码的类时,都会看到一个这样的画面: 大意是:这个jar文件,没有附带源码.紧接着后面的就看不懂了,很好奇下面的一部分是 ... 
- CSS的单位 及 css3的calc() 及 line-height 百分比
			CSS的单位及css3的calc()及line-height百分比 摘自:http://www.haorooms.com/post/css_unit_calc 单位介绍 说到css的单位,大家应该首先 ... 
- Linux 搭建 SVN
			一.yum 安装 subversion yum -y install subversion 二.创建svn版本库所在路径(建议放在opt.usr.home下) mkdir -p /usr/local/ ... 
- 数字图像处理,图像锐化算法的C++实现
			http://blog.csdn.net/ebowtang/article/details/38961399 之前一段我们提到的算法都是和平滑有关, 经过平滑算法之后, 图像锐度降低, 降低到一定程度 ... 
- HDU4635
			/* 最终添加完边的图,肯定可以分成两个部X和Y,其中只有X到Y的边没有Y到X的边, 那么要使得边数尽可能的多,则X部肯定是一个完全图,Y部也是, 同时X部中每个点到Y部的每个点都有一条边,假设X部有 ... 
- 【Java】仿真qq尝试:聊天界面 && 响应用户输入
			需求分析: 逐步完善一个“qq仿真”程序. 参考: 1.文本框与文本区:http://www.weixueyuan.net/view/6062.html 2.java布局:http://www.cnb ... 
- php操作redis cluster集群成功实例
			java操作redis cluster集群可使用jredis php要操作redis cluster集群有两种方式: 1.使用phpredis扩展,这是个c扩展,性能更高,但是phpredis2.x扩 ... 
- [BZOJ1721][Usaco2006 Mar]Ski Lift 缆车支柱
			Description Farmer Ron in Colorado is building a ski resort for his cows (though budget constraints ... 
- resultMap结果集映射
			resultMap结果集是用来定义sql查询的结果与java对象的映射关系.它主要解决2大问题: 1)可以解决POJO属性名和表结构的字段名不一致问题(甚至是 不是标准的驼峰命名法) 2)可以完成高级 ... 
- JSR规范整理
			Web Service技术 Java Date与Time API ( JSR 310) Java API for RESTful Web Services (JAX-RS) 1.1 (JSR 311) ... 
