问题
- linux如何实现在凌晨一点备份指定文件夹的所有信息
- oracle如何对数据进行分页显示
画程序内存结构
test.java
class Swap{
int a;
static int b;
}
class Test{
static void swap(Swap a,Swap b){
}
public static void main(String …args){
Swap a=new Swap();
a.a=10;a.b=20;
Swap b=new Swap();
b.a=20;b.b=40;
swap(a,b);
System.out.println(a.a+a.b+b.a);
}
}
栈区 |
swap.b 0x02 swap.a 0x01
main.a 0x01 main.b 0x02 |
静态区 |
Swap.b 0->20->40 |
堆 |
New Swap() 0x01 A 0->10 New swap() 0x02 A 0->20
|
运行结果( )
class Test {
static void swap(Swap a, Swap b) {
}
static void swap(int a,int b){
int c=a;
a=b;
b=c;
}
public static void main(String... args) {
Swap a = new Swap();
a.a = 10;
a.b = 20;
Swap b = new Swap();
b.a = 20;
b.b = 40;
swap(a.a, b.b);
System.out.println(a.a);
System.out.println(a.a + a.b + b.a);
}
}
class Swap {
int a;
static int b;
}
栈区 |
swap c 10 swap.b 40->10 swap.a 10->40
main.a 0x01 main.b 0x02 |
静态区 |
Swap.b 0->20->40 |
堆 |
New Swap() 0x01 A 0->10 New swap() 0x02 A 0->20
|
运行结果( )
class Swap {
int a;
int b;
}
class Test {
static void swap(Swap a, Swap b) {
Swap c=a; a=b; b=c;
}
static void swap(int a,int b){
int c=a; a=b; b=c;
}
public static void main(String... args) {
Swap a = new Swap();
a.a = 10; a.b = 30;
Swap b = new Swap();
b.a = 20; b.b = 40;
swap(a,b);
System.out.println(a.a + a.b + b.a);
}
}
栈区 |
Swap c 0x01 Swap.b 0x02->0x01 Swap.a 0x01->0x02 Main.a 0x01 Main.b 0x02 |
静态区 |
|
堆 |
New Swap() 0x01 A 0->10 B 0->30 New swap() 0x02 A 0->20 B 0->40
|
运行结果( )
class Swap {
int a;
int b;
}
class Test {
static void swap(Swap a, Swap b) {
Swap c=a;
a.a=b.a;
b.a=c.b;
}
static void swap(int a,int b){
int c=a; a=b; b=c;
}
public static void main(String... args) {
Swap a = new Swap();
a.a = 10; a.b = 30;
Swap b = new Swap();
b.a = 40; b.b = 80;
swap(a,b);
System.out.println(a.a + a.b + b.a);
}
}
栈区 |
Swap c 0x01 Swap.b 0x02 Swap.a 0x01 Main.a 0x01 Main.b 0x02 |
静态区 |
|
堆 |
New Swap() 0x01 A 0->10->40 B 0->30 New swap() 0x02 A 0->40->30 B 0->80
|
运行结果( )
linux怎么制作tar包?
tar -cvf file.tar 要打包的文件
function class object package jar
java怎么制作jar包? jar -cvf file.jar 要打包的类及相关资源
找到之前包含你写的函数的那个类
package com.yk.util;
public class YkUtil{
public int sumOfArray(int a[]){
int s=0;
return s;
}
public static boolean isNumStr(String str){
if( str==null || str.length()==0) return false;
return true;
}
public int count(String str,char ch){
int cnt=0;
return cnt;
}
public static boolean isFloatStr(String str){
return true;
}
}
命令行切换到bin路径
jar -cvf yk1.0.jar com\yk\util\YkUtil.class
dir
怎么使用第三方的jar包
转到eclipse,创建java project:testjar,
选中工程testjar、右键属性---找到java buildpath----library----点击添加jar—找到你刚才创建的jar包文件
在src下创建java文件
test.java
class testjar{
public static void main(String args[]){
//调用你制作的jar包中两个函数,一个静态的,一个非静态的
Yk补全能看到你jar包中的类
}
}
课间:在你oracle数据库所在的电脑,搜索一个操作oracle数据库的jar文件:ojdbc*.jar
封装: 将数据及相关函数写到类中(定义类的过程)
多态:多态特指有多个实现不同的功能的同名函数
编译时多态: 函数重载overload
指一个类中有多个同名的函数(形参不一样),
new String补全,
运行时多态: 函数重写override
父子类中有多个同名的函数(返回类型、形参完全一样)
创建一个文件Oop.java
class Test {
public static void main(String[] args) {
ITest test=null;
test=new TestA();
test.abc(); //运行时判断调用那个abc
test=new TestB();
test.abc(); //运行时判断调用那个abc
}
}
interface ITest {
// java对接口最初的定义:只能放常量和没有函数体的函数(抽象函数,类似c的函数声明)
// jdk1.8 开始,允许接口中可以放有函数体的函数
int i = 0; // 不赋值,看error
void abc(); // 给一对大括号,看error
}
interface ITest2 {
}
class TestA extends Test implements ITest, ITest2 {
@Override
public void abc() {
// TODO Auto-generated method stub
System.out.println(TestA.class);
}
}
class TestB implements ITest {
@Override
public void abc() {
// TODO Auto-generated method stub
System.out.println(TestB.class);
}
}
运行结果( )
interface ITest {
// java对接口最初的定义:只能放常量和没有函数体的函数(抽象函数,类似c的函数声明)
// jdk1.8 开始,允许接口中可以放有函数体的函数
int i = 0; // 不赋值,看error
void abc(); // 给一对大括号,看error
}
interface ITest2 {
}
class TestA extends Test implements ITest, ITest2 {
TestA(){
System.out.println(TestA.class);
}
@Override
public void abc() {
System.out.println(TestA.class);
}
}
class TestB implements ITest {
@Override
public void abc() {
System.out.println(TestB.class);
}
}
class Test {
Test(){
System.out.println(Test.class);
}
public static void main(String[] args) {
ITest test=null;
test=new TestA();
// test.abc(); //运行时判断调用那个abc
// test=new TestB();
// test.abc(); //运行时判断调用那个abc
}
}
运行结果( )
class Test {
Test(){
System.out.println(Test.class);
}
public static void main(String[] args) {
ITest test=null;
test=new TestA();
test.abc(); //运行时判断调用那个abc
test=new TestB();
test.abc(); //运行时判断调用那个abc
}
}
运行结果( )
构造函数能否重载?
构造函数能否重写?
java操作数据库
使用数据库的客户端程序(和数据库不在同一台电脑) ,必须知道数据库的ip、port、database name、user、pass才可以使用数据库
检查环境:
主机能ping通oracle所在的电脑
在oracle所在电脑,执行 netstat -ano | find “LISTEN” 查找Oracle在哪个端口侦听
在服务或文件夹中查找数据库的名字
操作数据库的技术:JDBC(Java DataBase Connectivity)
相关的定义在java.sql包
创建java工程 yksql,添加操作oracle数据库的jar包
class yksql {
public static void main(String[] args) {
// jdbc使用步骤
// 第一步,加载驱动(操作数据接的代码) Class.forName("oracle.jdbc.driver.OracleDriver");// 提示 ClassNotFoundException
}
}
加异常处理机制
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据接的代码)
Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行程序(不加jar包、加jar包)
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据库的代码) Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
// 第二步:和数据库建立连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行不显示任何信息表示和数据库能建立连接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据库的代码)
Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
// 第二步:和数据库建立连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");
//第三步:创建执行sql语句的对象
Statement st= con.createStatement();
// 第四步:执行DDL/DML
st.executeUpdate("create table test1(a int)");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行两次
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据库的代码)
Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
// 第二步:和数据库建立连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");
// 第三步:创建执行sql语句的对象
Statement st = con.createStatement();
// 第四步:执行DDL/DML
String sql = null;
byte bSql[] = new byte[200];
while (true) {
System.out.println(bSql);
try {
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行程序后,通过任务管理器杀掉运行的进程
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据库的代码)
Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
// 第二步:和数据库建立连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");
// 第三步:创建执行sql语句的对象
Statement st = con.createStatement();
// 第四步:执行DDL/DML
String sql = null;
byte bSql[] = new byte[200];
while (true) {
System.out.print("yksql>");
int len=System.in.read(bSql);
System.out.println(bSql[0]+bSql[1]);
try {
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行程序后直接回车,再输入a回车
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据库的代码)
Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
// 第二步:和数据库建立连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");
// 第三步:创建执行sql语句的对象
Statement st = con.createStatement();
// 第四步:执行DDL/DML
String sql = null;
byte bSql[] = new byte[200];
while (true) {
System.out.print("yksql>");
int len = System.in.read(bSql);
if (len == 2)
continue;
sql = new String(bSql, 0, len - 2);
if (sql.equals("quit") || sql.equals("exit")) {
System.exit(0);
}
try {
if (sql.contains("select")) {// 执行SELECT
} else { // 执行DDL、DML(insert、delete、update)
st.executeUpdate(sql);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行程序:输入不包含select关键字的sql语句
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据库的代码)
Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
// 第二步:和数据库建立连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");
// 第三步:创建执行sql语句的对象
Statement st = con.createStatement();
// 第四步:执行DDL/DML
String sql = null;
byte bSql[] = new byte[200];
while (true) {
System.out.print("yksql>");
int len = System.in.read(bSql);
if (len == 2)
continue;
sql = new String(bSql, 0, len - 2);
if (sql.equals("quit") || sql.equals("exit")) {
System.exit(0);
}
try {
if (sql.contains("select")) {// 执行SELECT
ResultSet rs = st.executeQuery(sql);
int fCnt = rs.getMetaData().getColumnCount();
// 显示查询列名称
for (int i = 1; i <=fCnt; i++) {
System.out.print(rs.getMetaData().getColumnName(i)+"\t");
}
System.out.println();
} else { // 执行DDL、DML(insert、delete、update)
st.executeUpdate(sql);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行程序:输入select语句
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
class yksql {
public static void main(String[] args) {
try {
// jdbc使用步骤
// 第一步,加载驱动(操作数据库的代码)
Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException
// 第二步:和数据库建立连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");
// 第三步:创建执行sql语句的对象
Statement st = con.createStatement();
// 第四步:执行DDL/DML
String sql = null;
byte bSql[] = new byte[200];
while (true) {
System.out.print("yksql>");
int len = System.in.read(bSql);
if (len == 2)
continue;
sql = new String(bSql, 0, len - 2);
if (sql.equals("quit") || sql.equals("exit")) {
System.exit(0);
}
try {
if (sql.contains("select")) {// 执行SELECT
ResultSet rs = st.executeQuery(sql);
int fCnt = rs.getMetaData().getColumnCount();
// 显示查询列名称
for (int i = 1; i <= fCnt; i++) {
System.out.print(rs.getMetaData().getColumnName(i) + "\t");
}
System.out.println();
// (通过游标)循环遍历结果集中每条数据
while (rs.next()) {
for (int i = 1; i <= fCnt; i++) {
System.out.print(rs.getString(i) + "\t");
}
System.out.println();
}
} else { // 执行DDL、DML(insert、delete、update)
st.executeUpdate(sql);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
转到bin路径,dir看类有没有,复制连接数据库的jar包到bin路径 java -cp ./ojdbc14.jar;. yksql
yksql>创建一张表,有primary key,有default
yksql>增加一个日期字段
yksql>显示数据
yksql>增加数据
yksql>增加数据
yksql>删除一条数据
yksql>修改一条数据
实践:
怎么让程序能执行
insert into tbl(fld1,fld2) select f1,f2 from tbl2 这种格式sql语句