1.通过菜鸟教程学习Java基础知识
1.1Java函数的参数按值传递
Java的函数参数通过值传递,函数内的改变不影响函数外的改变
class Main {
public static void swap(Integer i, Integer j) {
Integer temp = new Integer(i);
i = j;
j = temp;
}
public static void main(String[] args) {
Integer i = new Integer(10);
Integer j = new Integer(20);
swap(i, j);
System.out.println("i = " + i + ", j = " + j);
}
}
上面代码输出结果是: i=10,j=20 i和j的值没有发生变化。因为值传递中会建立副本,函数中无法改变原始对象。
但是下面代码结果发生了改变
class intWrap {
int x;
}
public class Main {
public static void main(String[] args) {
intWrap i = new intWrap();
i.x = 10;
intWrap j = new intWrap();
j.x = 20;
swap(i, j);
System.out.println("i.x = " + i.x + ", j.x = " + j.x);
}
public static void swap(intWrap i, intWrap j) {
int temp = i.x;
i.x = j.x;
j.x = temp;
}
}
结果是:i.x=20,j,x=10. 因为函数建立了对象,Java的应用程序不会传递对象,只传递对象引用,按引用传递对象对于对象数据类型,因为该对象本身指向的是它在内存中的地址,所以方法调用的时候,实际上是创建的地址的副本,所以在方法中对其值进行改变的时候,他的地址没有变,值也就跟着改变了;而当你重新创建一个对象的时候,它指向的便是另一个对象的地址了。Java中进行的是值传递,对于对象参数,值的内容是对象的引用。
1.2Java面向对象
继承
子类用有父类的非private属性和方法,提高代码复用性。子类也拥有自己的属性和方法,子类单继承但是可以多重继承 使用 extends 和 implements 这两个关键字来实现继承。
多态
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。
- 方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
- 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
- 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
封装
是种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。可防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。public方法是外部类访问该类成员变量的入口。这些方法被称为getter和setter方法。任何要访问类中私有成员变量的类都要通过这些getter和setter方法
2.学习Oracle
数据区 是Oracle存储分配的最小单位extent
-段segment 数据段:表中所有数据 索引段:查询的索引数据 临时段 回滚段)
-表空间:最大逻辑划分区域,(系统表空间system tablespace 辅助表空间sysaux 撤销表空间undo 用户u
物理存储结构:
-数据文件。dbf数据文件依附于表空间存在 (系统数据文件 回滚数据文件undotbs01,dbf 用户数据文件 临时数据文件tenp02,dbf)
-控制文件 最小的文件 最重要.ctl
-日志文件.log(重做日志文件redo01.log记录所有数据变化,提供回复数据-归档日志文件:重做日志文件的历史备份 )
-服务器参数文件-密码文件 -警告文件alert_orcl.log(定期删除)-跟踪文件
服务器结构----
-系统全局区SGA(高速数据缓冲区-共享池:库高速缓冲区,字典高速缓冲区-重做日志缓冲区-Java池-大型池-流池)
Oracle进程-----
-用户进程:必须先建立一个连接
-后台进程:协调内存和磁条一致性
-数据库写入进程dbwr:缓冲区高速缓存满足条件数据写入
-日志写入进程lgwr(用户发出commit命令,重做日志文件缓冲区信息满三分之一 超3秒)
-归档进程
-系统监控进程 smon实例恢复,清理临时段
-进程监控进程pmon释放资源
sqlplus与数据库交互----
-服务器执行的命令-sql命令 ;结束符 -PL/SQL程序块/结束符
-本地命令SQL*Plus命令 无结束符
-设置SQL*Plus运行环境:SET system_variable value SET PAGESIZE value顶部标题到页结束的行数,
LINESIZE value newpage value页与页的间隔 psuse value(on off 输出结果是否滚动显示
-常用plus命令 -HELP|?【topic】 descripe desc+表名 写到一半随时查询#desc
-spool c:\emp.txt创建文件spool off之后才能显示内容spool out=off+print
-show errors/lno/recyclobin show user
格式化查询结果:
-格式化列:修改列标题:col empno heading 员工名称
--格式化数字列col sal format $999.999.00
--格式化字符长度 col ename format a4
--格式化null col camm null 没有奖金
--控制格式化开关col sal off/on
--列出列显示属性 col sal 重新设置属性col sal clear
SQL语言-------strucured query language结构化查询语言
-select from-where-group by -having-select-order by
-SQL关键字编写规程:
--不区分大小写,对象名和列名不区分大小写;
--字符值和日期值区分大小写
--SQL语句可以分行显示
用户模式------
-模式:一系列逻辑数据结构或对象的集合。模式对象:由用户创建的逻辑结构,用来存储或引用数据,比如表、索引、试图、过程。
--简单查询,查询所有列:1连接模式 conn scott/tiger 2 select * from dept;
--查询其他模式表:select * from soctt.emp;
--查询;多个表中数据: select * from dept,salgrade;
--查询特定列:select job,ename,empno from emp;
--为列指定别名: as 可写可不写 别名加上双引号
--select带表达式:select ename,sal,sal*(1+0.1) from emp;
--不显示重复列distinct select distinct job from emp;
-选择行筛选查询: select empno,ename,sal from emp where sal>1500;
-like、not like select empno,ename from emp where ename like 'S%';--%一个或多个字符 _一个字符
--统计:
-select job,avg(sal),sum(sal),max(sal),count(job) from emp group by job;
having after group by 对分组进一步筛选,where后不能使用聚合函数 必须用having
select deptno as 部门编号,avg(sal) as 平均工资 from emp group by depton having avg(sal)>2000;
排序order by------asc desc select deptno,empno,ename from emp order by deptno,,empno;
连接-----
-表别名select e.ename 员工姓名,d.dname 部门名称 from emp e,dept d where e.deptno=d.deptno and e.job='MANAGER';
-内连接 inner join select e.name 员工姓名,d.dname 部门名称,e.job 职位
from emp e join dept d on e.deptno=d.deptno;
-外连接--
--左外连接 left join 包含左表不符合条件的数据行 右外连接 right join
--完全外连接full join 左连接和右连接 消除重复部分
-自然连接 natural join 两个表中相同名称列 select ename sal from emp natural join dept where sal>2;
自然连接表不能使用别名
-自连接--
-自参照表显示上下级或层次关系,不同列之间有参照或从属关系
select e2.ename 上层管理者,e1.ename 下属员工
from emp.e1 left join emp.e2 on e1.mgr = e2.empno;
-交叉连接 cross join