java笔记前三章不定期更新.docx
《java笔记前三章不定期更新.docx》由会员分享,可在线阅读,更多相关《java笔记前三章不定期更新.docx(17页珍藏版)》请在冰豆网上搜索。
java笔记前三章不定期更新
第一章:
重点
一、环境变量配置-->快捷方式,仙人指路
1、path:
操作系统-->可执行命令
1)、临时配置:
cmd-->setpath=%path%;可执行命令的所在目录;C:
\ProgramFiles\Java\jdk1.7.0_25\bin
2)、永久配置:
(建议在用户变量中设置)
path:
可执行命令的所在目录;C:
\ProgramFiles\Java\jdk1.7.0_25\bin
3)、JAVA_HOME:
很多知名厂商约定俗成
C:
\ProgramFiles\Java\jdk1.7.0_25-->后面没有;
2、classpath:
jvm-->类|程序
1)、没有配置:
java.lang.*|当前目录
2)、临时配置:
java-classpath.;E:
\xp\20141124\003_code\1类
3)、永久配置:
classpath:
.;类所在的目录
3、深入:
加入包名
javac-d.HelloWorld.java
javacom.bjsxt.HelloWorld
javac-dD:
\Test.java-->编译到D:
javac-cp.;D:
\-d.HelloWorld.java
java-cp.;d:
\com.bjsxt.HelloWorld
编译:
javac-d-cp源代码
-d:
字节码存放的路径
-cp:
依赖类的路径(不包括包名)
运行:
java-cp依赖类的路径本类
二、jdk&jre&jvm
1、jdk:
javadevelopmentkitjava开发工具-->开发产品
2、jre:
javaruntimeenvironment运行时环境-->运行产品
3、jvm:
javavritualmachinejava虚拟机
1)、虚拟的计算机
2)、翻译-->跨平台
3)、规范|接口-->解耦扩展性
三、HelloWorld
1、模板
publicclass类名{
publicstaticvoidmain(String[]args){
}
}
2、类与源代码关系
1)、一个源码中包含多个类(不推荐)
2)、一个源码中最多一个public,public类必须与源码名称相同
3)、包含main(入口点publicstaticvoidmain(String[]){}),称为主类,主类置于public类中
四、编程规范
1、目标:
不报错能运行,让人看得懂看得舒心
2、手段
1)、e文、见名知意
2)、成对编程()[]{}""''
3)、合理缩进tab
4)、适当注释:
思路
///**//***/
第2章:
标识符:
一、作用:
助记符类方法变量常量命名
匿名:
没有使用标识符,仅使用一次
二、命名规则与命名规范
1、命名规则-->java强制执行,编译不通过
1)、字母_$数字组成
2)、不能以数字开头1HelloWord
3)、不能为java关键字|保留字(小写)ClassMyClassclassDemo01
4)、java中区分大小写
2、命名规范-->行业标准
1)、类:
每个单词首字母大写
2)、变量|方法名:
第一个单词首字母小写,从第二个起首字母大写-->驼峰
3)、常量:
所有字母大写_分割
见名知意+e文
数据类型
一、作用
1、分门别类
2、使用方便
3、节约内存
二、基本类型(一个盒子)
1、数值型
1)、整数byteshortintlong
byte:
1个字节-128-127
short:
2个字节正负3w
int:
4个字节正负21亿
long:
8个字节很大....
2)、小数floatdouble-->不要比相等
float:
4个字节灰常大
double:
8个字节太....
2、字符型char2个字节
1)、解码:
二进制-->字符
2)、编码:
字符-->二进制
字符集统一:
gbkutf8unicode(jvm)
3、布尔型boolean:
1位true|false
java强类型语言
一、变量:
盒子袋子
1、声明|定义|开辟盒子
类型变量名[=初始值];
2、使用变量(必须先声明后使用)-->值的拷贝
1)、存储=:
变量名=值;
2)、查看:
打印拷贝
3、分类:
默认值
1)、局部变量:
没有默认值
2)、实例变量
3)、类|静态变量
4、局部变量:
1)、必须先声明后使用
2)、使用前必须确保值存在
3)、一次声明多次使用
4)、同一个作用域范围内不能声明同名的变量
5)、养成良好的习惯:
声明同时手动给定初始值值
二、字面值|直接量
1020303.14
1、整数-->int
2、小数-->double
三、常量:
只读
1、特点:
值一旦确定不可改变
2、声明
final类型常量名[=初始值];
3、使用
1)、存储=:
没有值可以存储,变量名=值;
2)、查看:
打印拷贝
运算符
1、算术运算符:
+-*/%++--
2、赋值运算符:
=
3、扩展运算符:
+=-=*=/=%=
4、关系运算符:
><>=<===!
=instanceof
5、逻辑运算符:
&&||!
6、条件运算符:
?
:
7、位运算符:
&|~^>><<>>>-->了解
类型转换
一、自动
大类型=小值
1、只要大数参与运算,以大数为准
2、大数尽可能提前
二、强制:
小类型=(小类型)大值
注意()作用范围
控制语句
一、分类
1、顺序执行
2、选择执行
1)、if:
单双多-->判断区间
单:
if(boolean类型表达式){
}
双:
if(boolean类型表达式){
}else{
}
多:
if(boolean类型表达式){
}elseif(boolean类型表达式2){
}..else{}
2)、switch:
定值判断|枚举|1.7String
switch(int定值|枚举|1.7String){
case值1:
语句块;
[break;]
case值2:
语句块;
[break;]
default:
其他情况
}
1)、switch结束
a)、正常执行完毕
b)、break:
防止下穿
2)、default:
尽可能防止最后
3、循环执行:
执行重复的代码块-->有规律才使用循环
1)、四要素:
初始表达式判断条件循环体迭代因子
2)、死循环:
条件永远为true
3)、结束与暂停
a)、结束:
正常执行完毕|break
break:
结束本层循环
b)、暂停:
continue:
暂停本次执行,继续执行下一次
4)、分类
a)、当到型while(){}
b)、直到型do..while();
c)、确定次数for(;;){}
d)、数组|容器for(元素类型局部变量:
容器|数组){}
方法(绝对的重点)
一、理解
解决问题的方案|功能
二、作用
1、避免main方法过于臃肿
2、重用
3、自上而下分解问题
三、定义|声明
1、位置:
类中,方法外,方法不能嵌套
2、声明
1)、修饰符-->public|protected||privatefinalstaticabstractsynchronizednative
2)、格式
public||static返回类型|void方法名(形参类型形参名[,...]){
//代码块-->方法体
[return[返回值];]
}
3)、思考
a)、功能-->名称
b)、形参:
方法能否独立运行
c)、返回类型:
下一步操作是否存在直接影响
d)、static:
类.调用对象.调用
4)、方法签名:
方法名(形参类型、个数顺序)-->与形参名无关,确保一个类中唯一性
四、调用|使用
1、位置:
调用顺序与编写顺序无关
2、调用
[接收变量=]类.|对象.方法名([实参]);
a)、void|匿名接收:
不用接收变量
b)、接收变量:
使用多次
3、两个一致性
a)、形参>=实参
b)、接收变量>=返回类型>=返回值类型
4、return
1)、void:
结束方法-->有选择跳出方法
2)、返回类型:
结束方法+返回值-->确保所有的情况都存在返回值
在同一个作用域内,return不能再存在代码
五、重载
1、定义:
两同三不同(同一类方法名相同形参类型个数顺序不同)
2、作用:
方便调用
3、不是所有方法都适合使用重载,方法体中逻辑(业务)基本相同
4、过多的重载可能引起调用混乱
六、递归
1、定义:
方法自己调用自己
2、头:
何时结束递归体:
重复执行的代码
3、理论上可以使用循环替代-->IO非常方便
4、缺点:
耗内存优点:
简单
第3章:
OOP
一、类:
一切需求为中心复杂的引用类型
1、作用:
封装数据提供功能
2、抽象类
1)、名词-->属性
2)、动词-->方法
3)、环境|联系-->类与类关系(依赖关联聚合组合继承实现)
3、声明类
public||class类名{
//属性(实例|成员属性)
//构造器
//方法(成员方法)
}
属性:
public|protected||private类型属性名[=初始值];
方法:
public|protected||private返回类型|void方法签名{}
二、对象:
类的实例
1、创建:
new构造器
克隆
反序列化
反射
2、创建对象:
[类型引用变量|对象名=]new类([实参列表])
new:
1)、开辟空间2)、调用构造器3)、返回地址给引用变量
匿名:
没有引用变量
3、使用属性:
必须存在对象才能使用。
NullPointerException-->只有引用没有对象
存:
引用|匿名对象.属性=值
取:
查看
与局部变量的区别:
默认值修饰符作用域内存区域
4、使用方法:
引用|匿名对象.方法([实参列表])
每个对象拥有自己的一份存储空间;对象间共享方法(方法在调用时传递自身数据)。
内存分析:
运行期的行为,数据流向、操作
一、分类
1、栈:
后进先出,局部变量|形参
2、堆:
无序,new对象
3、方法区:
特殊的堆,共享的(字节码方法表静态信息字符串池)
二、理解
1、java一切皆为值传递,拷贝(基本类型拷贝内容本身,引用拷贝的地址)
2、一个引用在一个时刻只能指向一个对象
3、一个对象可以被多个引用所指向,其中一个对其发生变化,另外的引用也可见
引用类型:
类数组接口
引用分类:
强弱软虚
构造器
一、作用:
初始化对象信息的,为new服务的
二、特殊的方法()
1、名称与类同名
2、没有返回类型|void-->可以存在return(有选择的结束构造器)
3、只能new时调用,一个对象只能调用构造器一次
4、修饰符不能为staticfinalabstract
三、空构造:
始终保证一个至少存在一个构造器
1、空构造:
没有手动编写其他的构造器,javac在编译时自动加入空构造器
默认访问权限与声明类时保持一致
2、一旦加入自己构造器,javac不再加入空构造器
3、良好的习惯:
确保空构造器存在
a)、继承默认找父类的空构造
b)、反射空构造器创建对象方便
c)、高级框架默认查找空构造...
四、构造器重载:
只看形参(个数顺序类型)即可.....
this:
当前类的对象类.this
一、理解
1、调用者本身,谁调用代表谁
2、成员方法|构造器|构造块:
隐式传递
3、在不引起混淆前提下,this可以省略,不建议省略。
二、常见形式
1、this.属性:
区分属性与形参(局部变量)同名,避免就近原则
2、this.方法([实参列表]):
成员方间调用,区分成员方法or静态方法
3、this([实参列表]):
构造器重载时,相互调用。
仅限于构造器首行
不能使用类.this([实参列表])
4、this:
单独使用,查看|比较地址
不能省略类.this-->区分内部类中与外部类存在同名属性、方法
static:
静态的类的
一、理解
1、凡是静态的都是共享的
2、凡是静态的都是先于对象存在的,与对象无关
3、不能出现thissuper等对象信息
不能直接使用对象信息
二、常见形式:
类.访问
1、static属性:
静态属性|类属性
2、static方法:
工具方法
3、static{}:
加载类信息、初始化类信息
块:
{}
一、作用
1、组织代码
2、作用域
二、分类
1、普通块|匿名块:
方法中块中
2、静态块:
加载类信息,初始化类信息,仅初始化一次
3、构造块:
初始化对象信息,先于构造器执行,每创建一次对象调用一次
与构造器的区别:
只能存放常量|字面值信息,不能传参;构造器共享不变的代码;只能try..cath
4、同步块:
synchronized线程安全
先静态后成员....
封装:
隐藏细节
一、可见性
public:
随处可见
protected:
合法继承-->子类中且子类自己使用
default:
家庭和睦
private:
自私自利
本类publicprotecteddefaultprivate
同包publicprotecteddefault
不同包子类publicprotected
不同包其他类public
二、javaBean(POVOBO)
1、尽可能将数据私有化
2、提供setter与getter访问器操作数据
操作方便
三、单例设计模式:
对外只有一个对象
1、饿汉式:
1)、构造器私有化
2)、声明静态的私有的属性创建该实例
3)、对外提供公共的静态方法访问该属性
2、懒汉式:
1)、构造器私有化
2)、声明静态的私有的属性不创建该实例
3)、对外提供公共的静态方法访问该属性,第一次访问时创建该实例
四、分层:
各司其职合理分工
继承:
延续和扩展父类的一切信息
一、理解
1、类:
对同种事物的抽象
2、继承:
对同一批类的抽象
二、继承:
延续和扩展父类的一切信息,包括私有信息
1、延续|重用-->关联继承
2、重写
3、新增
三、实例化
1、先父类后子类
2、先静态后成员
继承链:
向上追溯-->顺藤摸瓜
1)、编译:
确定方法表(invokespecialinvokestaticinvokevirtual)看左边
2)、运行:
在确定方法表基础上,执行代码找右边
四、重写
1、与重载区别:
1)、重载:
同一个类名称相同形参个数类型顺序不同方便调用
2)、重写:
子类中签名(名称+形参个数类型顺序)相同父类不满足要求
2、判断
1)、程序
@Override-->1.5
在父类中编写调用,调用成功重写,否则新增
2)、人为
a)、前提:
继承签名相同
b)、在合理范围内提高子类方法的可见性否则编译错误
返回类型<=
1)、基本类型|void==
2)、引用类型<=
异常类型<=不是指个数,范围
可见性>=
c)、特例:
-->基于(代码编写的位置看类型)就近原则
a)、私有方法静态方法final方法不能被重写
b)、属性不能被重写
五、super:
子类中父类信息
前提:
在子类中,存在访问权限
1、super.属性:
子类定义了父类同名的属性,显式调用父类的属性
2、super.方法([实参列表]):
子类中重写父类的方法,显式调用父类的方法
3、super([实参列表]):
子类的构造器首行,显式调用父类其他构造器,默认调用父类无参构造
this()不能与super()同时出现
六、final:
最终的
1、局部常量:
值一旦确定不可改变
2、实例常量:
没有默认值,在实例化对象完成之前确保值存在,值一旦确定不可改变.
1)、声明同时赋值
2)、先声明,构造块中赋值
3)、先声明,构造器中赋值(所有的构造器中都必须存在赋值)
3、静态常量:
没有默认值,在加载类完成之前确保值存在,值一旦确定不可改变.
1)、声明同时赋值
2)、先声明,静态块中赋值
4、final方法-->不能重写
final类-->没有子类,不能被继承
尚学堂老师专供,不定期更新;
2014.11.28