《Private》
访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据
《protected》
需要从以下两个点来分析说明:
子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)
如果把 openSpeaker() 方法声明为 private,那么除了 AudioPlayer 之外的类将不能访问该方法。
如果把 openSpeaker() 声明为 public,那么所有的类都能够访问该方法。
如果我们只想让该方法对其所在类的子类可见,则将该方法声明为 protected。
《访问控制和继承》
请注意以下方法继承的规则:
父类中声明为 public 的方法在子类中也必须为 public。
父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
父类中声明为 private 的方法,不能够被继承。
《非访问修饰符》
为了实现一些其他的功能,Java 也提供了许多非访问修饰符。
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。
《静态变量》
Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~
使用 static 可以修饰变量、方法和代码块。
//1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员
//2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
//3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法
《final 修饰符》
final 变量:赋值后,不可变;
final 方法: 可以被子类继承,但不能被子类修改。
finale 类: 不能被继承。
《abstract 修饰符》
abstract 抽象类不能被实例化,声明抽象类的唯一目的就是为了将来对该类进行扩充。
如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
------------------------------------------------------------------------------
《算术运算符》
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 描述 例子
+ 加法 - 相加运算符两侧的值 A + B 等于 30
- 减法 - 左操作数减去右操作数 A – B 等于 -10
* 乘法 - 相乘操作符两侧的值 A * B等于200
/ 除法 - 左操作数除以右操作数 B / A等于2
% 取余 - 左操作数除以右操作数的余数 B%A等于0
++ 自增: 操作数的值增加1 B++ 或 ++B 等于 21(区别详见下文)
-- 自减: 操作数的值减少1 B-- 或 --B 等于 19(区别详见下文)
1、前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。
2、后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算
<关系运算符>
下表为Java支持的关系运算符
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 描述 例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (A == B)为假。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 (A> B)为假。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 (A <B)为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 (A> = B)为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (A <= B)为真。
<位运算符>
操作符 描述 例子
& 如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100
| 如果相对应位都是0,则结果为0,否则为1 (A | B)得到61,即 0011 1101
^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
〜 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2得到15即0000 1111
<逻辑运算符>
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 描述 例子
&& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A && B)为假。
| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 (A | | B)为真。
! 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 !(A && B)为真。
---------------------------------------------------------------------------------
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
--------------------------------------------------------------------------------
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。
(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现
<多态>
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
--------------------------------
Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现
Java 2 重构的Hashtable实现了Map接口
<E>为Element的首字母,一般表示集合中的元素。
<T>为Type的首字母,表示传输参数的类型。
---
类 ObjectInputStream 和 ObjectOutputStream 是高层次的数据流,它们包含反序列化和序列化对象的方法
----------------------------
java.net.Socket 类代表客户端和服务器都用来互相沟通的套接字。
------------------------------------------------------------
《JDBC》
PreparedStatement语句特点:
1,可读性好,不易犯错;
2,有预编译机制,性能好;
3,防止Sql注入式攻击;
ORM=Object Relationship Database Mapping
对象和关系数据库的映射
DAO=DataAccess Object
数据访问对象
把数据库相关的操作都封装在这个类里面,其他地方看不到JDBC的代码
----------------------------------------------------------
<Spring>
IOC是反转控制 (Inversion Of Control)的缩写
----------------------------------------------------------
《JSP》
jsp由这些页面元素组成:
1. 静态内容
就是html,css,javascript等内容
2. 指令
以<%@开始 %> 结尾,比如<%@page import="java.util.*"%>
3. 表达式 <%=%>
用于输出一段html
4. Scriptlet
在<%%> 之间,可以写任何java 代码
5. 声明
在<%!%> 之间可以声明字段或者方法。但是不建议这么做。
6. 动作
<jsp:include page="Filename" > 在jsp页面中包含另一个页面。在包含的章节有详细的讲解
7. 注释 <%-- -- %>
不同于 html的注释 <!-- --> 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了
JSP一共有9个隐式对象:
request 代表请求 请参考 request常见方法
response 代表响应 请参考 response 用法
out 代表 输出
pageContext 代表当前页面作用域
session 代表当会话作用域
application 代表当全局作用域
page 对象即表示当前对象
config可以获取一些在web.xml中初始化的参数。
exception 对象只有当前页面的<%@page 指令设置为isErrorPage="true"的时候才可以使用。