Java学习笔记
2017.04.16
JAVA学习笔记
输入设备异常、类型转换异常
try {
BufferedReader in = ...
String inputLine = in.readLine();
value = Integer.valueOf(inputLine).intValue();
} catch (Exception exc) {
// 出现异常的处理代码
}
Static关键字注解 独立于实例,即不能用this super来调用
实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
http://www.cnblogs.com/beanmoon/archive/2012/04/25/2470298.html
Continue 回到判断,break 退出循环
Main函数中:string[] args 是函数的传递参数,用来接收参数
This对本类的形参和变量名重合时区分,super引用父类方法 //非完整
访问权限修饰词:public ;protected 继承的类可访问;private 只有本类可以访问;默认 包访问权限;
标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法滴;
优秀攻城师的习惯:
1、变量名由多单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法),如 myAge
2、变量命名时,尽量简短且能清楚的表达变量的作用,做到见名知意。如:定义变量名 stuName 保存“学生姓名”信息
PS: Java 变量名的长度没有限制,但 Java 语言是区分大小写的,所以 price 和 Price 是两个完全不同的变量哦!
final 关键字 常量名 = 值;
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等:
Arrays.toString(数组名); Arrays.sort(数组名);
foreach 并不是 Java 中的关键字,是 for 语句的特殊简化版本,在遍历数组、集合时, foreach 更简单便捷。从英文字面意思理解 foreach 也就是“ for 每一个”的意思,那么到底怎么使用 foreach 语句呢?
注意:foreach 不能赋值;编译器1.5以上才能用
面向对象:
成员变量:整个在类中 有一个初始值
局部变量:仅限于在定义的方法内部中;没有初始值;在一个方法中一个
两类变量重名时,局部变量优先
Java 中的 static 使用之静态变量:它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。
Java 中的 static 使用之静态方法:
1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,
3、 静态方法中能直接调用静态方法,不能直接调用非静态方法,需要通过对象来访问非静态方法
Java 中的 static 使用之静态初始化块: 可创建多块
执行顺序:静态初始化块(只一次)、普通初始化块、构造方法
静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
面向对象三大特性:封装、继承、多态
封装:1.只通过规定方法访问;2.隐藏类的实例细节,方便修改和实现;
设为Private – getter/setter方法:属性读写用 – 加入属性控制语句:判断属性合法性
包:管理Java文件;解决同名文件冲突
定义包:package 注:放在源程序第一行,用“.”
例如系统包:
java.(功能).(类)
java.lang.(类) 包含Java语言基础的类
java.util.(类) 包含Java语言中各种工具类
java.io.(类) 包含输入,输出相关功能的类
包的使用:
1.可以通过使用import关键字,在某个文件使用其他文件中的类。
2.Java中,包的命名规范是全小写字母拼写
3.使用的时候可以加载某个包下的所有文件 eg:com.imooc.*
也可以加载某个具体子包下的所有文件
Java的访问修饰符:
本类 同包 子类 其他
private 1
默认 1 1
protected 1 1 1
public 1 1 1 1
This关键词:this关键字其实相当于帮你创建当下类的一个具体对象,你不用this的话就得自己实例化一下。这样说比较明白吧。
this是类内部对对象本身的一个引用
1、它方便类中方法访问自己的属性,set方法中,如果传入同名的形参,没有this无法赋值,java是就近原则
2、只能通过this(),实现在构造器中调运另外一个构造器,不用this没法调运。
3、this作为方法的返回值,可以实现java中链式写法。 ?
内部类:
1)成员内部类:
内部类可以任意的访问外部类里面的成员,不论外部成员的访问权限是什么。
定义内部类之后 ,必须需要用外部类来创建内部类对象。
当外部类和内部类同时出现相同的成员变量名是,如果要访问外部成员变量需要this关键字
2)静态内部类: 直接创建 内部类 对象名= new 内部类();
但可通过new 外部类().成员 访问外部类非静态成员;如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;
3)方法内部类:内部类定义在外部类的方法中,只在外部类该方法中使用;方法内部类不能使用访问控制符和 static 修饰符。
继承 class 子类 extends 父类 先父类后子类
方法的重写 返回类型、方法名、参数与父类一致
final关键字:
1) 类,不被继承;2)方法,不被覆盖(重写);3)属性,类初始化必须有值或者构造方法赋值(二选一);4)变量,只能赋值一次,常量
Super关键字:在对象内部使用,可以代表父类对象。 访问父类属性、方法
子类构造方法必须调用构造父类方法(隐式 super调用父类方法,显式必须放在第一行)
Object所有的父类 哈希code判读对象
1) toString方法 输出属性值;默认输出对象地址
2) equals 方法 两个对象的引用是否相同内存地址;dog.equals(dog2)
类对象 obj.getClass() 类的代码信息 VS 类的对象
多态:
1.引用多态
1) 父类引用指向本类;
2) 父类引用指向子类; Animal dog = new Dog();
2.方法多态
引用类型转换 向上转换;向下转换(有风险,溢出)强制类型转换 Dog dog2 = (Dog)animal
用instanceof判断是否进行类型 if(animal instacnof cat)
抽象类 abstract:约束子类必须实现某些方法,但不关注细节
抽象方法没有方法体{}分号结束;
接口:修饰符 interface 接口名 [extends 父接口1,2。。。] 不能protected private
接口属性是常量,接口方法为抽象方法,不能有方法体
子类继承父类实现接口的语法:修饰符 class 类名 父类 implements 接口1,接口2…
1)接口引用:IPlayGame ip1 = new SmartPhone(); 引用实现了接口的对象
2)或者 使用匿名内部类 IPlayGmae ip2 = new IPlayGmae(){ 匿名内部类};
3)或者直接NEW一个然后.方法:new interface(){}.方法
设计过程 //入门要求即会看
UML :unified modeling language 统一建模语言或者标准建模语言
支持模型化和软件系统开发图形语言
常用UML :
1) 用例图 use case diagram 可视化
2) 序列图 sequence diagram 交互关系及顺序
3) 类图 class diagram 类属性方法等,业务逻辑 //可以直接创建class
建模工具 visio、rational rose、powerdesigner
项目分析: (以答答租车为例)
1、 数据模型分析 操作(方法)、属性
车的类型,载客量/载货量
2、 业务模型分析 在设计程序之前,明确该程序必须执行哪些任务
例:选车,租车天数、统计金额、载客、货量
3、 显示和流程分析 用户看到的各种界面,显示流程是步骤
例:选择车辆-> 输入序号-> 输出总金额
选车:1、2、3、4、5