欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      達(dá)內(nèi)學(xué)習(xí)心得:Oracle_11g常用SQL語句(高級工程師必備)[精選五篇]

      時間:2019-05-12 12:21:59下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《達(dá)內(nèi)學(xué)習(xí)心得:Oracle_11g常用SQL語句(高級工程師必備)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《達(dá)內(nèi)學(xué)習(xí)心得:Oracle_11g常用SQL語句(高級工程師必備)》。

      第一篇:達(dá)內(nèi)學(xué)習(xí)心得:Oracle_11g常用SQL語句(高級工程師必備)

      達(dá)內(nèi)學(xué)習(xí)心得:Oracle_11g常用SQL語句(高級工程師必備)

      參賽學(xué)員:吳賢志 獲獎獎項:三等獎

      --退出 SQLPLUS exit;

      --修改 system(sys)賬號密碼 SQLPLUS /NOLOG CONN /AS SYSDBA ALTER USER SYSTEM IDENTIFIED BY tarring;

      --清除 SQLPLUS 屏幕 CLEAR SCREEN;CL SCR;

      --查看數(shù)據(jù)文件位置

      SELECT NAME FROM v$datafile;

      --查看控制文件位置

      SELECT NAME FROM v$controlfile;

      --查看日志文件位置

      SELECT MEMBER FROM v$logfile;

      --建立表空間

      CREATE TABLESPACE ts01

      DATAFILE 'D:DataBaseOracle11goradataorcltest_db01.dbf'SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 1024M DEFAULT STORAGE(INITIAL 10m NEXT 1M)PERMANENT ONLINE LOGGING;

      --修改表空間

      ALTER TABLESPACE ts01 NOLOGGING;

      --表空間增加數(shù)據(jù)文件 ALTER TABLESPACE ts01

      ADD DATAFILE 'D:DataBaseOracle11goradataorcltest_db02.dbf'SIZE 100M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

      --刪除表空間 DROP TABLESPACE ts01;

      --刪除表空間同時刪除數(shù)據(jù)文件

      DROP TABLESPACE ts01 INCLUDING CONTENTS AND DATAFILES;

      --表空間中建表

      CREATE TABLE student(student_id VARCHAR2(10), student_name VARCHAR2(20))TABLESPACE ts01;

      --查看表所屬表空間

      SELECT TABLE_NAME, TABLESPACE_NAME FROM tabs WHERE TABLE_NAME = 'STUDENT';

      --查看表結(jié)構(gòu)

      DESCRIBE student;DESC student;

      --增加表注釋

      COMMENT ON TABLE student IS '學(xué)生信息表';

      --查看表注釋

      SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAME = 'STUDENT';SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = 'STUDENT';

      --表字段增加注釋

      COMMENT ON COLUMN STUDENT.STUDENT_ID IS '學(xué)生編號';

      --查看表字段注釋

      SELECT * FROM USER_COL_COMMENTS WHERE TABLE_NAME = 'STUDENT';SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = 'STUDENT';

      --查看用戶所有表

      SELECT * FROM User_Tables;

      --查看用戶擁有的所有對象 SELECT * FROM User_Objects;

      --查看用戶擁有的 表 試圖 序列 SELECT * FROM User_Catalog;

      --表字段修改

      ALTER TABLE student MODIFY(student_id CHAR(15));

      --表字段增加

      ALTER TABLE STUDENT ADD(AGE NUMBER(2));

      --刪除表字段

      ALTER TABLE STUDENT DROP COLUMN student_name;

      --修改表名稱

      RENAME STUDENT TO STU;

      --刪除表

      DROP TABLE STUDENT;

      CREATE TABLE student(s_id Varchar2(10), s_name varchar2(20), s_age Number(3), s_birthday DATE)TABLESPACE ts01;

      --增加一條記錄 INSERT INTO student(s_id, s_name, s_age, s_birthday)

      VALUES('S000000001', 'Tarring01', 10, to_date('1982-10-06','yyyy-mm-dd'));

      INSERT INTO student(s_id, s_name, s_age, s_birthday)

      VALUES('S000000002', 'Tarring02', 10, Sysdate);

      --使用替代變量時,輸入字符串字段時一樣要寫上引號 INSERT INTO student(s_id, s_name, s_age, s_birthday)VALUES(&s_id, &s_name, 10, Sysdate);

      --修改記錄

      UPDATE student SET s_name = '陶川', s_age = 20 WHERE s_id = 'S000000002';

      --刪除記錄

      DELETE FROM student WHERE s_id = 'S000000002';

      --截斷表

      TRUNCATE TABLE student;

      --事務(wù)處理 COMMIT;--提交事務(wù)

      INSERT INTO student(s_id, s_name)VALUES('S001', 'tarring1');ROLLBACK;--回滾,回滾到上一次提交過后的點

      --帶恢復(fù)點的事務(wù) COMMIT;INSERT INTO student(s_id, s_name)VALUES('S001', 'tarring1');SAVEPOINT firstdate;INSERT INTO student(s_id, s_name)VALUES('S002', 'tarring2');SAVEPOINT seconddate;DELETE FROM student;ROLLBACK TO firstdate;SELECT * FROM student;

      --約束條件

      說明

      --------UNIQUE

      指定字段的值,必須是唯一的

      --PRIMARY KEY

      主鍵,會為指定的字段作索引,并且也是唯一的值--NOT NULL

      不可以是空值【'' NULL】或0(零)--CHECK

      檢查,必須符合指定的條件

      --FOREIGN KEY

      外鍵,用來創(chuàng)建一個參考表之間的關(guān)系

      --建表同時建立唯一約束 CREATE TABLE student(s_id Varchar2(10), s_name varchar2(20), s_age Number(3), s_birthday DATE, CONSTRAINT s_name_uk UNIQUE(s_name))TABLESPACE ts01;

      --查看唯一約束

      SELECT table_name, constraint_name, constraint_type FROM User_Constraints WHERE table_name = 'STUDENT';

      --作業(yè):數(shù)據(jù)字典【分類 常用】

      --建表同時建立主鍵 CREATE TABLE student(s_id Varchar2(10), s_name varchar2(20), s_age Number(3), s_birthday DATE, CONSTRAINT s_id_pk PRIMARY KEY(s_id))TABLESPACE ts01;

      --查看主鍵約束

      SELECT table_name, constraint_name, constraint_type FROM User_Constraints WHERE table_name = 'STUDENT';

      --建表同時建立非空字段 CREATE TABLE student(s_id Varchar2(10), s_name varchar2(20)NOT NULL, s_age Number(3), s_birthday DATE, CONSTRAINT s_id_pk PRIMARY KEY(s_id))TABLESPACE ts01;

      INSERT INTO student(s_id, s_name)VALUES('S001', NULL);--插入一個null

      --查看非空約束

      SELECT table_name, constraint_name, constraint_type, search_condition User_Constraints WHERE table_name = 'STUDENT';

      --建表同時建立檢查 CREATE TABLE student(s_id Varchar2(10), s_name varchar2(20), s_age Number(3), s_birthday DATE, CONSTRAINT s_age_ck CHECK(s_age BETWEEN 1 AND 100)--端點值可以使用)TABLESPACE ts01;

      --查看檢查約束

      SELECT table_name, constraint_name, constraint_type, search_condition User_Constraints WHERE table_name = 'STUDENT';

      --外鍵的使用

      CREATE TABLE team(t_id Varchar2(10), t_name Varchar2(20), CONSTRAINT t_id_pk PRIMARY KEY(t_id))TABLESPACE ts01;

      CREATE TABLE student(s_id Varchar2(10),F(xiàn)ROM FROM team_id VARCHAR2(10), s_name varchar2(20), CONSTRAINT s_id_pk PRIMARY KEY(s_id), CONSTRAINT s_team_id_fk FOREIGN KEY(team_id)REFERENCES team(t_id))TABLESPACE ts01;

      --查看表的外鍵約束

      SELECT table_name, constraint_name, constraint_type FROM User_Constraints WHERE table_name = 'STUDENT';

      drop table team;--被引用表是不能刪除的

      insert into team(t_id, t_name)values('t001', 'lansene');insert into student(s_id, s_name, team_id)values('s001','tarring', 't001');delete from team;--被引用的記錄是不能刪除的

      --關(guān)閉一個約束

      ALTER TABLE student DISABLE CONSTRAINT s_team_id_fk;

      --啟用一個約束

      ALTER TABLE student ENABLE CONSTRAINT s_team_id_fk;

      --刪除一個約束

      ALTER TABLE student DROP CONSTRAINT s_team_id_fk;

      --已創(chuàng)建的表增加一個約束

      ALTER TABLE student ADD CONSTRAINT s_team_id_fk FOREIGN KEY(team_id)REFERENCES team(t_id);

      /********************************************************************************************| |

      SQL語句5大類型

      | 命令

      | 說明

      | |********************************************************************************************| | Data Retrieval數(shù)據(jù)檢索

      | select

      | 查詢記錄

      | |********************************************************************************************| | Date Manipulation Language【DML】數(shù)據(jù)操縱語言 | insert

      | 添加記錄

      | |

      | update

      | 修改記錄

      | |

      | delete

      | 刪除記錄

      | |********************************************************************************************| | Data Definition Language【DDL】數(shù)據(jù)定義語言

      | create

      | 創(chuàng)建

      | |

      | alter

      | 修改

      | |

      | drop

      | 丟棄【刪除】

      | |

      | rename

      | 重命名

      | |

      | truncate | 截斷

      | |********************************************************************************************| | Transaction Control事務(wù)控制

      | commit

      | 確認(rèn)命令

      | |

      | rollback | 回退至前一次確認(rèn)的命令或保存點 | |

      | savepoint | 設(shè)置保存點

      | |********************************************************************************************| | Data Control Language【DCL】數(shù)據(jù)控制語言

      | grant

      | 授予權(quán)限

      | |

      | revoke

      | 撤消權(quán)限

      | |********************************************************************************************/

      /*************************************| |

      系統(tǒng)權(quán)限

      |

      說明

      | |*************************************| |

      create session

      | 連接數(shù)據(jù)庫

      | |*************************************| |

      create table

      | 創(chuàng)建表

      | |*************************************| |

      create sequence

      | 創(chuàng)建序列

      | |*************************************| |

      create view

      | 創(chuàng)建視圖

      | |*************************************| |

      create proceduer

      | 創(chuàng)建程序

      | |*************************************/

      /*******************************************************************| |

      對象 | 表【table】 | 視圖【view】 | 程序【procedure】

      | | 權(quán)限

      |

      |

      |

      | |*******************************************************************| |

      insert

      |

      Y

      |

      Y

      |

      | |*******************************************************************| |

      alter

      |

      Y

      |

      |

      | |*******************************************************************| |

      update

      |

      Y

      |

      Y

      |

      | |*******************************************************************| |

      delete

      |

      Y

      |

      Y

      |

      | |*******************************************************************| |

      select

      |

      Y

      |

      Y

      |

      | |*******************************************************************| |

      index

      |

      Y

      |

      |

      | |*******************************************************************| |

      execute

      |

      |

      |

      Y

      | |*******************************************************************/

      --創(chuàng)建用戶

      CREATE USER u01 IDENTIFIED BY p01;

      --創(chuàng)建用戶并制定默認(rèn)表空間

      CREATE USER u01 IDENTIFIED BY p01 DEFAULT TABLESPACE QUOTA 2M ON ts01;--quota 表空間中可使用的配額

      --修改用戶密碼

      ALTER USER u01 IDENTIFIED BY p001;

      --修改用戶表空間配額

      ALTER USER u01 QUOTA 20M ON ts01;ALTER USER u01 QUOTA UNLIMITED ON ts01;--用戶對表空間沒有配額限制

      --回收unlimited tablespace權(quán)限

      REVOKE UNLIMITED TABLESPACE FROM ts01;

      --刪除用戶

      DROP USER u01;

      --切換連接數(shù)據(jù)庫的用戶 CONNECT u01/p01;conn u01/p01;

      --授權(quán)用戶連接數(shù)據(jù)庫的權(quán)限

      GRANT CREATE SESSION TO u01;

      --授權(quán)用戶創(chuàng)建序列(sequence)的權(quán)限 GRANT CREATE sequence TO u01;

      --授權(quán)用戶創(chuàng)建表的權(quán)限

      GRANT CREATE TABLE TO u01;--授權(quán)用戶查表的權(quán)限

      grant select on ts01.user1 to wangkai;--授權(quán)用戶修改表的權(quán)限

      grant alter on user1 to wangkai;

      --授權(quán)用戶刪除表的權(quán)限(沒有此權(quán)限)grant drop on user1 to wangkai;(錯誤)--授權(quán)用戶對一個表的所有權(quán)限 grant all on user1 to wangkai;

      --授權(quán)所有用戶對一個表的所有權(quán)限 grant all on user1 to public;

      --收回用戶創(chuàng)建表的權(quán)限

      REVOKE CREATE TABLE FROM u01;--收回用戶查表的權(quán)限

      REVOKE select on user1 FROM u01;--收回用戶修改的權(quán)限

      REVOKE select on user1 FROM u01;--收回用戶對一個表的所有權(quán)限 revoke all on user1 from wangkai;--收回所有用戶對一個表的所有權(quán)限 revoke all on user1 to public;

      --創(chuàng)建角色

      CREATE ROLE r01;

      --角色授權(quán)

      GRANT CREATE SESSION, CREATE TABLE TO r01;

      --收回角色權(quán)限

      REVOKE CREATE TABLE FROM r01;

      --查看角色權(quán)限

      SELECT ROLE,PRIVILEGE FROM role_sys_privs WHERE ROLE='R01'

      --角色賦給用戶 GRANT r01 TO u01;

      --查看當(dāng)前用戶角色

      SELECT * FROM user_role_privs;

      --刪除角色

      DROP ROLE r01;

      第二篇:達(dá)內(nèi)IT培訓(xùn)學(xué)習(xí)心得

      在達(dá)內(nèi)為期兩周的實習(xí)時間已悄然離去,剛來時的那種新鮮好奇早飛到了九霄云外,更多的是離開時的那種不舍和對自己及所學(xué)的反思。

      當(dāng)我第一天來這里時,和其他同學(xué)一樣懷著興奮得心情踏進(jìn)達(dá)內(nèi)IT培訓(xùn)中心,或許是單純的對這個新環(huán)境的好奇、也或許是曾經(jīng)對這兒有一點了解想親自見證一下,因為聽大二的學(xué)長說只有來到達(dá)內(nèi)才能學(xué)到與學(xué)校不同的東西,才能更接近實際項目工程。的確如他們所說,運行程序前必須作許多準(zhǔn)備工作,如:在ClassView內(nèi)的CSDIDemoDoc文檔內(nèi)創(chuàng)建變量或增加成員函數(shù);在ResourceView內(nèi)創(chuàng)建快捷鍵或增加菜單項??當(dāng)然做成功一個項目必須先寫好需求分析。

      就這樣既興奮又好奇的跟著老師一步一步往下走,跟著在鍵盤上忙碌的敲代碼、調(diào)整程序。實習(xí)時間慢慢的在減少,而程序卻相反——越來越難,越來越繁。因為一個小環(huán)節(jié)與大家拉開了距離,在一個龐大的項目中是不允許任何一處掉鏈子的??吹酵瑢W(xué)們早已“輕車熟路”操作自如了,而我卻不知所措,立刻就有了壓力。一天下來感受最深的就是那種巨大的差距。學(xué)校所學(xué)與實際應(yīng)用中的脫節(jié)。

      在我困惑與迷茫時,老師給我解釋說:“咱用的編程軟件是VC6.0,更加注重的是對學(xué)生實戰(zhàn)能力的培養(yǎng),在學(xué)校所學(xué)專業(yè)知識的基礎(chǔ)上讓我們學(xué)習(xí)最新的編程技術(shù),通過做項目的方式來讓我們明白實踐中的編程到底是怎樣的??”正是冀老師的耐心講解讓我重新找回了自信,幾天下來從簡單的c++程序到第一個win32程序,從MFC到第一個Dialog??雖然程序中還是有太多的疑惑但更多的是增長了見識看清了差距。

      通過實際項目的開發(fā)我有以下幾點收獲:

      1.多向老師、同學(xué)虛心請教,也別說自己學(xué)的不怎么樣,不然會大大減少自己的自信,從而與大家的差距越來越大。

      2.編程以前一定要對整個項目有仔細(xì)的了解,最好能寫好需求分析,這樣在實際操作時就會更加調(diào)理,而且不會遺漏東西。

      3.做任何項目都離不開團(tuán)隊合作。所以我們一定要注意團(tuán)隊合作意識,多和小組內(nèi)的人交流。

      4.在編程中一定要規(guī)范,絕對不可以隨性

      在達(dá)內(nèi)的這半個月培訓(xùn)我感覺獲益匪淺。雖然與課本知識不同,至少我看清了實際做項目與書本知識之間的差距,不至于在就業(yè)后手足無措。這次實習(xí)對我以后的學(xué)習(xí)甚至就業(yè)帶來了巨大的幫助。

      感謝學(xué)校,感謝達(dá)內(nèi)的王老師,冀老師。

      第三篇:達(dá)內(nèi)學(xué)習(xí)心得:俄羅斯方塊項目總結(jié)

      達(dá)內(nèi)學(xué)員:我的俄羅斯方塊項目總結(jié)

      獲獎學(xué)員:陳啟壯 所獲獎項:三等獎 內(nèi)容

      俄羅斯方塊一共三個類中間用等號隔開 軟件的開發(fā)過程 明確業(yè)務(wù)需求

      用自然語言,將業(yè)務(wù)功能描述清楚

      ...2 業(yè)務(wù)分析

      找到有哪些業(yè)務(wù)對象,和圖片的分析

      tetris(俄羅斯方塊)

      |-- score 累計分?jǐn)?shù)

      |-- lines 銷毀的行數(shù)

      |-- Wall(墻 20行x10列)

      |-- 20row(行)

      |--10 col cell(列)

      |-- tetromino(4格方塊,有7種形態(tài))

      |-- 4 cell

      |--nextOne 下一個準(zhǔn)備下落的方塊

      |-- 4 cell 數(shù)據(jù)模型,一切業(yè)務(wù)對象轉(zhuǎn)換為數(shù)字表示

      場地按照行列劃分為20x10格子

      格子有屬性row,col,color 4 類 設(shè)計

      Tetris

      |--int score

      |--int lines

      |--Cell[20][10] wall

      |--Tetromino tetromino

      |

      |--Cell[4] cells

      |--row

      |--col

      |--color 5 算法設(shè)計,就是如何利用數(shù)據(jù)的計算實現(xiàn)軟件的功能

      4格方塊的初始形態(tài): I S Z J L T O

      就在初始數(shù)據(jù)的數(shù)值狀態(tài)設(shè)計

      四格方塊的下落計算:就是將每個格子的row+1

      就是將下落的業(yè)務(wù)功能,轉(zhuǎn)換為數(shù)字計算實現(xiàn)

      左右移動

      下落流程控制:控制方塊下落與墻之間的控制關(guān)系

      1 合理的文字流程描述

      2 分析文字描述中的功能(動作)為方法

      3 用流程控制語句連接方法實現(xiàn)功能 嚴(yán)格測試結(jié)果?。詄stCase 左右移動流程控制

      分?jǐn)?shù)計算

      界面的繪制

      鍵盤事件控制

      旋轉(zhuǎn)流程控制

      加速下降流程控制

      開始流程控制(Timer)

      暫停流程控制

      繼續(xù)流程控制

      結(jié)束流程控制

      首先是Cell類,最基本的類包含3個私有屬性和get,set方法,重寫Object類的toString輸出方法,并規(guī)定格子所具有的3個移動功能 package com.tarena.tetris;//包:小寫英文字母,域名倒寫.項目名 /** * 最小的格子

      */ public class Cell{

      private int row;

      private int col;

      private int color;

      public Cell(int row, int col, int color){

      super();

      this.row = row;

      this.col = col;

      this.color = color;

      }

      public int getCol(){

      return col;

      }

      public void setCol(int col){

      this.col = col;

      }

      public int getColor(){

      return color;

      }

      public void setColor(int color){

      this.color = color;

      }

      public int getRow(){

      return row;

      }

      public void setRow(int row){

      this.row = row;

      }

      public void left(){

      col--;

      }

      public void right(){

      col++;

      }

      public void drop(){

      row++;

      }

      public String toString(){

      return row+“,”+col;

      } } =============================================================== package com.tarena.tetris;import java.util.Arrays;import java.util.Timer;import java.util.TimerTask;

      import javax.swing.JPanel;//是能夠顯示的矩形面板區(qū)域 import javax.swing.JFrame;//窗口框

      import javax.swing.border.LineBorder;//實現(xiàn)邊框 import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.KeyAdapter;import java.awt.event.KeyListener;import java.awt.event.KeyEvent;/* * 俄羅斯方塊類

      * 俄羅斯方塊 擴(kuò)展了(extends)系統(tǒng)的顯示面板,增加了墻和

      * 正在下落的方塊

      * */ public class Tetris extends JPanel{

      public static final int ROWS = 20;

      public static final int COLS= 10;

      /*代表方塊下落著陸的墻*/

      private Cell[][] wall = new Cell[ROWS][COLS];

      /*是正在下落的方塊*/

      private Tetromino tetromino;

      /*下一個進(jìn)入的方塊*/

      private Tetromino nextOne;

      private static int score;

      private int lines;

      Timer timer;

      private boolean gameOver = false;

      private boolean pause = false;//暫停

      private static final int[] SCORE_LEVEL={0,1,4,10,100};

      private static final Graphics Graphics = null;

      /*銷毀(destory)滿行*/

      //

      0 1 2 3 4

      /*在Tetris中添加方法,檢查游戲是否結(jié)束*/

      public void rotateRightAction(){

      tetromino.rotateRight();

      if(outOfBounds()||coincide()){

      tetromino.rotateLeft();

      }

      }

      public void rotateLeftAction(){

      tetromino.rotateLeft();

      if(outOfBounds()||coincide()){

      tetromino.rotateRight();

      }

      }

      /*在Tetris中添加方法,檢查游戲是否結(jié)束*/

      private boolean gameOver(){

      gameOver = wall[0][4]!=null;

      return gameOver;

      }

      /*在Tetris中添加方法*/

      public void hardDropAction(){

      while(canDrop()){

      tetromino.softDrop();

      }

      tetrominoLandToWall();

      destroy();

      if(gameOver()){

      gameOverAction();

      }

      nextTetromino();

      }

      public void destroy(){

      int lines = 0;//統(tǒng)計本次銷毀的行數(shù)

      for(int row = 0;row

      Cell[] line = wall[row];

      if(fullCell(line)){

      clearLine(row,wall);

      lines++;//每消除一行就累計加1

      }

      }

      score += SCORE_LEVEL[lines];

      this.lines +=lines;

      }

      public static void clearLine(int row,Cell[][] wall){

      for(int i=row;i>1;i--){

      System.arraycopy(wall[i-1],0,wall[i],0,wall[i].length);

      }

      Arrays.fill(wall[0],null);

      }

      public static boolean fullCell(Cell []line){

      for(int col = 0;col

      if(line[col]==null){

      return false;//找到空格子,這行沒有滿

      }

      }

      return true;

      }

      public String toString(){//顯示全部的墻

      String str = “";

      for(int row = 0;row

      Cell[] line = wall[row];

      for(int col = 0;col

      Cell cell = line[col];

      if(tetromino.contains(row,col)){

      str +=row+”,“+col+” “;

      }else{

      str = str + cell + ” “;

      }

      }

      str +=”n“;

      }

      return str;

      }

      /*4格方塊下降流程

      * 方塊移動到區(qū)域最下方或是著地到其他方塊上無法移動時,* 就會固定到該處,而新的方法快出現(xiàn)在區(qū)域上方開始下落。

      * 如果能下降就繼續(xù)下降,* 否則就著陸到墻上,并且生成(隨機(jī))下一個方塊

      * */

      public void softDropAction(){

      if(canDrop()){//如果能下降

      tetromino.softDrop();//方塊繼續(xù)下降

      }else{

      tetrominoLandToWall();//著陸到墻上

      destroy();//

      if(gameOver()){

      gameOverAction();

      }

      nextTetromino();//生產(chǎn)(隨機(jī))下一個方塊

      }

      }

      private void startGameAction(){

      gameOver = false;

      pause = false;

      score = 0;

      lines = 0;

      emptyWall();

      nextTetromino();

      repaint();

      timer = new Timer();

      timer.schedule(new TimerTask(){

      public void run(){

      softDropAction();

      repaint();

      }

      }, 500, 500);

      }

      private void emptyWall(){

      for(int row=0;row

      Arrays.fill(wall[row],null);

      }

      }

      /*清理游戲結(jié)束現(xiàn)場,如:停止定時器等*/

      private void gameOverAction(){

      timer.cancel();//停止定時器

      }

      /*檢查 方塊 是否能夠繼續(xù)下落:到底最低部,或者墻上

      * 的下方有方塊,返回false不能下降,返回true可以下降

      * */

      public boolean canDrop(){

      //檢查到底部

      Cell[] cells = tetromino.getCells();

      for(Cell cell:cells){

      if(cell.getRow()==ROWS-1){

      return false;

      }

      }

      //檢查墻上下方是否有方塊

      for(Cell cell:cells){

      int row = cell.getRow();

      int col = cell.getCol();

      Cell block = wall[row+1][col];

      if(block!=null){

      return false;

      }

      }

      return true;

      }

      /*方塊“著陸”到墻上,* 取出每個小cell

      * 找到cell的行號row和列號col

      * 將cell放置到wall[row][col]位置上

      * */

      public void tetrominoLandToWall(){

      Cell[] cells = tetromino.getCells();

      for(Cell cell:cells){

      int row = cell.getRow();

      int col = cell.getCol();

      wall[row][col] = cell;

      }

      }

      /*生產(chǎn)(隨機(jī))下一個方塊

      * 1 下一個變?yōu)楫?dāng)前的* 2 隨機(jī)產(chǎn)生下一個

      * */

      public void nextTetromino(){

      if(nextOne==null){//第一次nextOne是null時候先生產(chǎn)一個

      nextOne = Tetromino.randomTetromino();

      }

      tetromino = nextOne;//下一個變?yōu)楫?dāng)前的

      nextOne = Tetromino.randomTetromino();//隨機(jī)產(chǎn)生下一個

      if(tetromino==null){//處理第一次使用時候下一個是null

      tetromino=Tetromino.randomTetromino();

      }

      }

      /*以格子為單位左右移動方塊

      * 1)如果遇到左右邊界就不能移動了

      * 2)如果與墻上的格子相撞就不能移動了

      * 變通為:

      * 1)先將方塊左移動,* 2)檢查(移動結(jié)果是否出界),或者(重合)

      * 3)如果檢查失敗,就右移的回來

      *

      * */

      public void moveLeftAction(){

      tetromino.moveLeft();

      if(outOfBounds()|| coincide()){

      tetromino.moveRight();

      }

      }

      private boolean outOfBounds(){

      Cell[] cells = tetromino.getCells();

      for(int i = 0;i < cells.length;i++){

      Cell cell = cells[i];

      int row = cell.getRow();

      int col = cell.getCol();

      if(row == ROWS||col<0||col>=COLS){

      return true;

      }

      }

      return false;

      }

      private boolean coincide(){

      Cell[] cells = tetromino.getCells();

      for(int i = 0;i < cells.length;i++){

      Cell cell = cells[i];

      int row = cell.getRow();

      int col = cell.getCol();

      if(row >0&&row0

      &&wall[row][col]!=null){

      return true;//重合 }

      }

      return false;

      }

      public void moveRightAction(){

      tetromino.moveRight();

      if(outOfBounds()|| coincide()){

      tetromino.moveLeft();

      }

      }

      public static final int CELL_SIZE = 25;

      /*在Tetris.java中添加main方法 作為軟件的啟動方法*/

      public static void main(String []args){

      JFrame frame = new JFrame(”俄羅斯方塊“);

      int wigth =(COLS+8)*CELL_SIZE +100;

      int height =ROWS*CELL_SIZE +100;

      frame.setSize(wigth,height);

      frame.setLocationRelativeTo(null);//居中

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置關(guān)閉窗口就關(guān)閉軟件

      frame.setLayout(null);//取消默認(rèn)布局,取消自動充滿

      Tetris panel = new Tetris();

      panel.setLocation(45,25);

      panel.setSize((COLS+8)*CELL_SIZE,ROWS*CELL_SIZE);

      panel.setBorder(new LineBorder(Color.black));

      frame.add(panel);//窗口中添加面板

      frame.setVisible(true);//顯示窗口時候調(diào)用paint()

      panel.action();

      }

      /*動作方法,這里是讓軟件開始動作,*/

      public void action(){

      //wall[18][2] = new Cell(18,2,0xff0000);

      startGameAction();

      //重繪方法->盡快調(diào)用paint()

      //startGameAction();

      //this 是當(dāng)前Tetris面板

      this.requestFocus();//為當(dāng)前面板請求獲得輸入焦點

      //this對象就獲得了輸入焦點,以后任何的

      //鍵盤輸入(包括左右方向鍵)目標(biāo)就是這個面板對象了!

      //addKeyLIstener添加鍵盤監(jiān)聽,監(jiān)聽那些按鍵輸入了

      this.addKeyListener(new KeyAdapter(){

      public void keyPressed(KeyEvent e){

      int key = e.getKeyCode();//key按鍵

      if(gameOver){

      if(key==KeyEvent.VK_S){

      startGameAction();//啟動游戲開始流程

      }

      return;

      }

      if(pause){

      if(key==KeyEvent.VK_C){

      continueAction();

      }return;

      }

      //System.out.println(”Type:“+e.getKeyCode());

      switch(key){

      case KeyEvent.VK_RIGHT :moveRightAction();break;

      case KeyEvent.VK_LEFT :moveLeftAction();break;

      case KeyEvent.VK_DOWN :softDropAction();break;

      case KeyEvent.VK_UP :rotateRightAction();break;

      case KeyEvent.VK_SPACE :hardDropAction();break;

      case KeyEvent.VK_P :pasueAction();break;

      }

      //按鍵->方塊移動方法->改變方塊數(shù)據(jù)->repaint()

      //->盡快調(diào)用paint()->利用新數(shù)據(jù)繪制

      repaint();

      }

      private void continueAction(){

      pause = false;

      timer = new Timer();

      timer.schedule(new TimerTask(){

      public void run(){

      softDropAction();

      repaint();

      }

      }, 500, 500);

      }

      private void pasueAction(){

      pause = true;

      timer.cancel();

      }

      });

      }

      //JPanel 類利用paint(涂畫)方法繪制界面

      //子類重寫paint方法可以修改繪圖邏輯

      public static final int BORDER_COLOR = 0x667799;

      public static final int BG_COLOR = 0xC3D5EA;

      public static final int FONT_COLOR = 0;

      public void paint(Graphics g){

      //g 代表綁定在當(dāng)前面板上的畫筆

      //利用畫筆在當(dāng)前 面板上 繪制了一串字符!

      paintBackground(g);//填充背景

      paintWall(g);//繪制墻

      paintTetromino(g);//繪制當(dāng)前方塊

      paintNextOne(g);//繪制下一個方塊

      paintScore(g);//繪制分?jǐn)?shù)

      paintTetrisBorder(g);//繪制邊線

      }

      private void paintScore(Graphics g){

      int x = 12 * CELL_SIZE;

      int y = 5 * CELL_SIZE;

      Font font = new Font(getFont().getName(),Font.BOLD,25);

      String str = ”分?jǐn)?shù): “+score;

      g.setColor(new Color(FONT_COLOR));

      g.setFont(font);

      g.drawString(str, x, y);

      y+=2*CELL_SIZE;

      str = ”行數(shù): “+lines;

      g.drawString(str, x, y);

      if(gameOver){

      str = ”(T_T)![s]再來!“;

      y+=2*CELL_SIZE;

      g.drawString(str, x, y);

      }

      if(pause){

      str = ”[c]繼續(xù)!“;

      y+=2*CELL_SIZE;

      g.drawString(str, x, y);

      }else{

      str = ”[p]暫停!";

      y+=2*CELL_SIZE;

      g.drawString(str, x, y);

      }

      }

      private void paintNextOne(Graphics g){

      if(nextOne==null)//如果沒有4格方塊就返回,不繪制

      return;

      for(Cell cell : nextOne.getCells()){

      int row = cell.getRow()+1;

      int col = cell.getCol()+9;

      int x = col*CELL_SIZE;

      int y = row*CELL_SIZE;

      g.setColor(new Color(cell.getColor()));

      g.fillRect(x, y, CELL_SIZE, CELL_SIZE);

      g.setColor(new Color(BORDER_COLOR));

      g.drawRect(x, y, CELL_SIZE, CELL_SIZE);

      }

      }

      private void paintTetromino(Graphics g){

      if(tetromino==null)//如果沒有4格方塊就返回,不繪制

      return;

      for(Cell cell : tetromino.getCells()){

      int row = cell.getRow();

      int col = cell.getCol();

      int x = col*CELL_SIZE;

      int y = row*CELL_SIZE;

      g.setColor(new Color(cell.getColor()));

      g.fillRect(x, y, CELL_SIZE, CELL_SIZE);

      g.setColor(new Color(BORDER_COLOR));

      g.drawRect(x, y, CELL_SIZE, CELL_SIZE);

      }

      }

      private void paintWall(Graphics g){

      for(int row = 0;row

      for(int col = 0;col < COLS;col++){

      Cell cell = wall[row][col];

      int x = col*CELL_SIZE;

      int y = row*CELL_SIZE;

      if(cell == null){

      //g.setColor(new Color(BORDER_COLOR));

      // g.drawRect(x, y,//

      CELL_SIZE, CELL_SIZE);

      }else{

      g.setColor(new Color(cell.getColor()));

      g.fillRect(x, y,CELL_SIZE, CELL_SIZE);

      g.setColor(new Color(BORDER_COLOR));

      g.drawRect(col*CELL_SIZE, row*CELL_SIZE,CELL_SIZE, CELL_SIZE);

      }

      }

      }

      }

      private void paintBackground(Graphics g){

      g.setColor(new Color(BG_COLOR));

      g.fillRect(0, 0, getWidth(), getHeight());

      }

      private void paintTetrisBorder(Graphics g){

      g.setColor(new Color(BORDER_COLOR));

      g.drawRect(0, 0, CELL_SIZE*COLS, CELL_SIZE*ROWS-1);

      g.drawRect(CELL_SIZE*COLS,0,CELL_SIZE*8-1, CELL_SIZE*ROWS-1);

      } } =============================================================== package com.tarena.tetris;import java.util.Arrays;import java.util.Random;/* * 四格方塊類,有7種子類:I T S Z J L O * */ public abstract class Tetromino {

      public static final int I_COLOR =0xff6600;

      public static final int T_COLOR =0xffff00;

      public static final int S_COLOR =0x66ccff;

      public static final int Z_COLOR =0x00ff00;

      public static final int J_COLOR =0x0000ff;

      public static final int L_COLOR =0xcc00ff;

      public static final int O_COLOR =0xff0000;

      protected Cell[] cells = new Cell[4];

      /*四格方塊的下落,是四個格子一起下落*/

      public void softDrop(){

      for(int i = 0;i

      cells[i].drop();

      }

      }

      /*向左移動一步*/

      public void moveLeft(){

      for(int i = 0;i

      Cell cell = cells[i];//引用賦值

      cell.left();

      }

      }

      public void moveRight(){

      //增強for循環(huán),是傳統(tǒng)數(shù)組迭代的“簡化版本”,//也稱為foreach循環(huán)(foreach迭代)(java 5以后)

      for(Cell cell:cells){//底層實現(xiàn)就是經(jīng)典迭代

      cell.right();

      }

      }

      public Cell[] getCells(){

      return cells;

      }

      protected Offset[] states;//旋轉(zhuǎn)的狀態(tài)

      protected class Offset{

      int row0,col0;

      int row1,col1;

      int row2,col2;

      int row3,col3;

      public Offset(int row0, int col0, int row1,int col1, int row2, int col2,int row3, int col3){

      this.row0 = row0;

      this.col0 = col0;

      this.row1 = row1;

      this.col1 = col1;

      this.row2 = row2;

      this.col2 = col2;

      this.row3 = row3;

      this.col3 = col3;

      }

      }

      private int index = 10000-1;

      /*向右轉(zhuǎn)*/

      public void rotateRight(){

      index++;

      Offset offset = states[index%states.length];

      Cell axis = cells[0];//找到軸(axis)的位置

      cells[0].setRow(offset.row0+axis.getRow());

      cells[0].setCol(offset.col0+axis.getCol());

      cells[1].setRow(offset.row1+axis.getRow());

      cells[1].setCol(offset.col1+axis.getCol());

      cells[2].setRow(offset.row2+axis.getRow());

      cells[2].setCol(offset.col2+axis.getCol());

      cells[3].setRow(offset.row3+axis.getRow());

      cells[3].setCol(offset.col3+axis.getCol());

      }

      public void rotateLeft(){

      index--;

      Offset offset = states[index%states.length];

      Cell axis = cells[0];//找到軸(axis)的位置

      cells[0].setRow(offset.row0+axis.getRow());

      cells[0].setCol(offset.col0+axis.getCol());

      cells[1].setRow(offset.row1+axis.getRow());

      cells[1].setCol(offset.col1+axis.getCol());

      cells[2].setRow(offset.row2+axis.getRow());

      cells[2].setCol(offset.col2+axis.getCol());

      cells[3].setRow(offset.row3+axis.getRow());

      cells[3].setCol(offset.col3+axis.getCol());

      }

      /*隨機(jī)生成一個具體方法*/

      public static Tetromino randomTetromino(){

      Random random = new Random();

      int type = random.nextInt(7);//0~6

      switch(type){

      case 0:return new I();

      case 1:return new T();

      case 2:return new S();

      case 3:return new J();

      case 4:return new Z();

      case 5:return new L();

      case 6:return new O();

      }

      return null;

      }

      public String toString(){

      return Arrays.toString(cells);

      }

      public boolean contains(int row, int col){

      for(int i =0;i

      Cell cell = cells[i];

      if(cell.getRow()==row && cell.getCol()==col){

      return true;

      }

      }

      return false;

      }

      } class I extends Tetromino{

      public I(){

      cells[0] = new Cell(0,4,I_COLOR);

      cells[1] = new Cell(0,3,I_COLOR);

      cells[2] = new Cell(0,5,I_COLOR);

      cells[3] = new Cell(0,6,I_COLOR);

      states = new Offset[]{

      new Offset(0,0,-1,0,1,0,2,0),new Offset(0,0,0,-1,0,1,0,2),};

      } } class T extends Tetromino{

      public T(){

      cells[0] = new Cell(0,4,T_COLOR);

      cells[1] = new Cell(0,3,T_COLOR);

      cells[2] = new Cell(0,5,T_COLOR);

      cells[3] = new Cell(1,4,T_COLOR);

      states = new Offset[]{

      new Offset(0,0,1,0,-1,0,0,1),new Offset(0,0,0,-1,0,1,1,0),new Offset(0,0,1,0,-1,0,0,-1),new Offset(0,0,0,1,0,-1,-1,0),};

      } } class S extends Tetromino{

      public S(){

      cells[0] = new Cell(0,4,S_COLOR);

      cells[1] = new Cell(0,5,S_COLOR);

      cells[2] = new Cell(1,3,S_COLOR);

      cells[3] = new Cell(1,4,S_COLOR);

      states = new Offset[]{

      new Offset(0,0,-1,0,1,1,0,1),new Offset(0,0,0,1,1,-1,1,0),};

      } } class Z extends Tetromino{

      public Z(){

      cells[0] = new Cell(0,4,Z_COLOR);

      cells[1] = new Cell(0,3,Z_COLOR);

      cells[2] = new Cell(1,4,Z_COLOR);

      cells[3] = new Cell(1,5,Z_COLOR);

      states = new Offset[]{

      new Offset(0,0,-1,1,0,1,1,0),new Offset(0,0,-1,-1,-1,0,0,1),};

      } } class J extends Tetromino{

      public J(){

      cells[0] = new Cell(0,4,J_COLOR);

      cells[1] = new Cell(0,3,J_COLOR);

      cells[2] = new Cell(0,5,J_COLOR);

      cells[3] = new Cell(1,5,J_COLOR);

      states = new Offset[]{

      new Offset(0,0,-1,0,1,0,1,-1),new Offset(0,0,0,1,0,-1,-1,-1),new Offset(0,0,1,0,-1,0,-1,1),new Offset(0,0,0,-1,0,1,1,1),};

      } } class L extends Tetromino{

      public L(){

      cells[0] = new Cell(0,4,L_COLOR);

      cells[1] = new Cell(0,3,L_COLOR);

      cells[2] = new Cell(0,5,L_COLOR);

      cells[3] = new Cell(1,3,L_COLOR);

      states = new Offset[]{

      new Offset(0,0,-1,0,1,0,-1,-1),new Offset(0,0,0,1,0,-1,-1,1),new Offset(0,0,1,0,-1,0,1,1),new Offset(0,0,0,-1,0,1,1,-1),};

      } } class O extends Tetromino{

      public O(){

      cells[0] = new Cell(0,4,O_COLOR);

      cells[1] = new Cell(0,5,O_COLOR);

      cells[2] = new Cell(1,4,O_COLOR);

      cells[3] = new Cell(1,5,O_COLOR);

      states = new Offset[]{

      new Offset(0,0,0,1,1,0,1,1),new Offset(0,0,0,1,1,0,1,1),};

      } }

      第四篇:達(dá)內(nèi)Java學(xué)習(xí)心得-第一個月

      學(xué)習(xí)心得

      七月之始,我們的達(dá)內(nèi)java班又開始正式上課了,從上課第一天到現(xiàn)在,已經(jīng)有一個月了,在這短暫的一個月里,我學(xué)到是java的基礎(chǔ)知識,重點是JavaSE。感覺時間過的是非常快的,短短一個月就這樣被我們給熬過去了,當(dāng)中既有心酸也有快樂。

      學(xué)習(xí)之初,有著一點點的不適應(yīng),首先是時間段的不適應(yīng),每天有這規(guī)定的時間上課,下課,休息?;蛟S是在大學(xué)這個懶散的環(huán)境下,我們已經(jīng)漸漸的遠(yuǎn)離了規(guī)定與約束,過分的放縱自己。隨著時間的一天天過去,慢慢的,我們開始適應(yīng)了這種學(xué)習(xí)的時間安排以及這樣的學(xué)習(xí)氛圍,從一種自由放縱中擺脫出來,有了所謂的上進(jìn)心,開始了各自的Java之路。

      在這段時間里,自己感覺最明顯的就是打字速度和以前相比有了明顯的提升,此外就是對一些基本的代碼的理解和運用有了一定自己的意識。這兩點是最明顯的變化。個人感覺學(xué)了這些基本知識之后,對于Java的認(rèn)識上的確有了一個提升,起初對它的認(rèn)識感覺和其他的編程語言應(yīng)該沒有多大區(qū)別,但是學(xué)完這些這些基本的知識之后,我的認(rèn)識是Java很強大,我們需要不斷地去學(xué),更多的是要不斷的去敲,把它練熟,這樣自己在從業(yè)的時候才會有底氣,敢于和別人去競爭。

      雖然我們的課堂是看視頻來學(xué)習(xí),但是個人覺得只要是能學(xué)到知識,這些學(xué)的形式只是一種次要的因素而已,對于一個想要學(xué)習(xí)的人來說,他每時每刻都在學(xué)習(xí)者,因為他愛學(xué)習(xí)。有了這一個月的學(xué)習(xí)經(jīng)歷之后,感覺自己當(dāng)初選擇達(dá)內(nèi)來學(xué)習(xí)Java是一個正確的選擇,我相信我只要有學(xué)習(xí)渴望,達(dá)內(nèi)一定能給我所要學(xué)的。一個都不愛學(xué)習(xí)的人,你給他再好的學(xué)習(xí)環(huán)境和最好的學(xué)習(xí)條件,無亞于對牛彈琴,無動于衷。結(jié)果還有一個浪費資源,浪費精力。

      整個學(xué)習(xí)的時間是四個月,對于余下的三個月,我拭目以待,相信自己一定能夠在有限的時間內(nèi)能夠?qū)W好這一門語言,為自己以后多一個機(jī)會。

      相信,我可以!

      第五篇:達(dá)內(nèi)學(xué)習(xí)心得:精心總結(jié)的面向?qū)ο?/a>

      達(dá)內(nèi)學(xué)習(xí)心得:精心總結(jié)的面向?qū)ο?/p>

      參賽學(xué)員:方錢有

      獲獎獎項:二等獎

      什么面向?qū)ο?

      個人分析覺得:在程序設(shè)計里,面向?qū)ο笫且环N相對說法,相對于面向過程而言的;

      面向“對象“:即重點在于“對象”;而面向過程:則重點在于“過程”,簡單說:就是我我們看待事物在眼光上注重點不一樣;比如說:我們評判一個女孩漂亮與否,有的人看重外表,有的人則看重“心靈”,只是側(cè)重點不一樣。

      舉個例子:把大象裝進(jìn)冰箱!

      面向過程面向?qū)ο螅ㄗ⒅匾幌盗袆幼骷催^程)(注重動作所操作的承受者[“對象”])

      “打開”冰箱“冰箱”打開“裝入”大象“大象”裝入“關(guān)閉”冰箱“冰箱”關(guān)閉

      類:通俗的說類就是“一類事物的簡稱”,并且這些事物至少具有一點“共同的”特征.比如說:動物就是一個類

      對象:就是某一類中一個具體的(就是可以具體描述出來的)東西,比如:動物(類)里的“狗”就是一個對象。(個人覺得對象相對于類而言的,因為狗又可以分好多種,‘狗’相對于‘哈士奇’是一個類,‘哈士奇’是‘狗’類的一個具體對象)

      在生活中就拿描述汽車來說,我們都知道汽車都有4個輪子; 都有跑的功能 可以如下描述:

      類汽車

      屬性: 4個輪

      功能: 跑

      那么怎么在Java中描述汽車這類呢?

      class car{

      int wheel=4;//屬性: 4個輪

      void run(){//方法(功能): 跑

      System.out.println(“是汽車都會跑”);

      }

      }

      那么可見“出租車”應(yīng)當(dāng)是“汽車”這類的一個具體化(實實在在的例子即“實例”)對象,那自然出租車也就具備了汽車這類所具備的“共有”屬性功能!

      如何創(chuàng)建一個出租車對象呢?java中通過new關(guān)鍵字來創(chuàng)建一個類的實例即對象,也叫類的實例化,就是把類具體化成一個實例嘛!

      格式:類名對象名 =mew 類名()

      Cartexi =newCar();

      創(chuàng)建了“出租車”對象(實例)之后那么它也就有了如下“自己”的屬性和功能。

      int wheel=4;//屬性: 4個輪

      void run(){//功能: 跑

      System.out.println(“我是出租車我也會跑”);

      }

      我們?nèi)绾蝸碓L問對象中的它自己的屬性和方法呢?

      格式:對象.屬性;對象.方法名();這一點也驗證了面向?qū)ο缶幊痰膫?cè)重點在于“對

      象”上;

      texi.wheel;texi.run()

      *******************************************************************************

      *******************************************************************************

      *******************************************************************************

      1.封裝:

      從字面可以解讀為將東西封起來再裝好。要想拿到里面的東西就得有相應(yīng)的方法打開,才能

      拿到。

      舉例來說:一個房間的門如果沒有上鎖,那么大家都可以進(jìn)去拿東西,但現(xiàn)在我們不想讓誰

      都進(jìn)來拿東西,我們可以將房門上鎖,只對外提供一把鑰匙,只有有鑰匙的人才能進(jìn)來,這

      就是“封裝”現(xiàn)象!

      在java程序中,“封裝”現(xiàn)象如何實現(xiàn)呢?

      可以這樣實現(xiàn):將類中的一些屬性和方法用private關(guān)鍵字修飾,將他們“私有化(即不對

      外直接公開)”,使外部其他類不能通過創(chuàng)建該類對象或通過類名直接訪問這些屬性和方法;

      只對外提供公有的方法,外部其他類必須通過該類對外提供的公有方法來訪問該類的相應(yīng)成員;例如:

      class Person{

      private String name;//將name屬性私有化(封裝)[相當(dāng)于了上鎖]使外部其他類不能直

      接訪問到

      public SetName(String name){//對外提供公有方法(相當(dāng)于房門鑰匙)供外部其他類訪問

      到本類屬性

      this.name=name;

      }

      }

      2.繼承:

      從字面來說繼承就是子父類關(guān)系的簡稱,就是兒子(女兒也行,好吧)會繼承老爸的一些屬性和行為

      在java中如何描述繼承關(guān)系呢?

      注意:第一得知道在java中繼承是類與類之間或者是接口與接口之間才有繼承關(guān)系;

      通過extends關(guān)鍵字來描述繼承關(guān)系

      例如:老爸這個類

      class Dad{

      String sex=man;

      void smoke(){

      System.out.println(“老子會抽煙!”);

      }

      }

      那么我們怎么來讓兒子這個類繼承老爸這個類呢?

      class Son extends Dad{//通過extends關(guān)鍵字兒子這個類就繼承老爸這個類了

      String name;//定義自己的屬性

      String sex=man;//繼承過來的屬性,無須再定義,這里寫出來是為了好理解

      void smoke(){//繼承過來的方法,無須再定義,這里寫出來是為了好理解

      System.out.println(“老子會抽煙!”);

      }

      void playBall(){//定義自己的方法

      System.out.println(“兒子即會打球又會抽煙!”);

      }

      void somke(){//重寫的方法

      System.out.println(“我不抽20塊以下的煙”);

      }

      void smoke(int n){//重載的方法

      System.out.println(“我抽了+n+”年的煙了“);

      }

      }

      那么具有繼承關(guān)系的兩個類有什么特點呢?

      1)子類會將父類的屬性和方法繼承過來,當(dāng)然子類也可以自己定義的屬性和方法

      2)當(dāng)子類自己定義的方法和父類繼承過來的方法相同時會發(fā)生“重寫“現(xiàn)象!

      3)父類用private關(guān)鍵字私有的方法是不能被繼承的!

      4)子類可以使用super訪問父類的屬性和方法

      5)子類通過重寫父類方法,修改父類的功能

      6)子類構(gòu)造器一定調(diào)用父類的無參構(gòu)造器

      7)構(gòu)造器不能繼承

      3.多態(tài):

      字面意思就是多種形態(tài),也就是說一種事物同時局部多種形態(tài).注意:要出現(xiàn)多態(tài)情況,那么類和類之間一定得是繼承關(guān)系,或者類和接口是實現(xiàn)關(guān)系

      我覺得:在java中多態(tài)是相對于一個對象而言的,就是父類型引用變量引用子類對象,并

      且父類型引用變量可以接受不同子類的對象

      例如:拿上面的舉例

      Dad uncle=new Son();父類引用變量uncle即具備Son類的成員又具備父類的成員;這也稱

      為“向上造型”;

      多態(tài)時的特點

      1)多態(tài)時訪問成員變量,如uncle.name;

      編譯時看等號左邊,父類有該成員變量則編譯通過,否則編譯出錯!

      運行時也看等號左邊,有則運行結(jié)果

      2)多態(tài)時訪問方法,如uncle.smoke()

      編譯時看等號左邊,父類有該成員方法則編譯通過,否則編譯出錯!

      運行時看等號右邊,父類有該方法,子類沒有該方法執(zhí)行父類方法;父類有該方法,子類也

      有該方法執(zhí)行子類方法

      3)多態(tài)時訪問靜態(tài)方法

      編譯運行都看等號左邊

      *******************************************************************************

      *******************************************************************************

      *******************************************************************************

      *********************

      4.抽象(有爭議):

      什么是抽象?

      抽象就是不具體。

      一般我們把不能具體描述的東西約定俗成為“抽象”的東西。例如:我們說一個人長得很

      “抽象”,n你想你能具體形容描述出來么?

      在JAVA中如何描述抽象這個概念呢?

      我覺得在java中抽象類是由抽象方法而衍生出來的,為什么呢?

      因為Java規(guī)定一個類中定義了抽象方法那這個類就跟著必須定義為抽象類,而不是因

      為先定義抽象類再跟著規(guī)定抽象類中的方法必須是抽象的,可能最后理解的結(jié)果是一樣的但

      性質(zhì)是不一樣的(個人理解)簡單說:就是有抽象方法的類一定是抽象類,但是抽象類中不

      一定都是抽象方法,也可以有具體方法。

      首先就是當(dāng)我要在一個類定義一個方法時,暫時我不知道該方法具體功能是什么;等我想好

      了我在用他實現(xiàn)一個功能時我再具體描述他功能,這樣我們就可以將這個方法用abstract關(guān)

      鍵字修飾定義為抽象方法

      (還有一點也就是什么時候定義抽象類的?也可以說抽象類是向上抽取而來的,就是幾個類

      據(jù)有共同的屬性和方法,不想每個類都定義一次,那么定義一個公有類(即抽象類)其他類

      只要繼承抽象類再重寫方法就行!)

      例如:我有一百塊錢,現(xiàn)在我不知道怎么用,等我想好了在具體怎么用!

      abstract class Money{//因為有了抽象方法所以必須定義為抽象類

      public abstract void buySomthing();//現(xiàn)在不知道怎么用,那就把它的功能代碼體去掉

      }

      //現(xiàn)在我餓了,想買東西吃了,我就知道怎么用了

      class Hungry extends Money{

      void buySomething(){

      System.out.println(”我餓了,現(xiàn)在我要買東西吃!“)

      }

      }

      抽象類的特點

      1)抽象類不能實例化

      2)抽象類可以繼承抽象類

      3)繼承抽象類必須得重寫抽象方法

      5.抽象類,接口,普通類 的不同點和相同點?

      1)不同點:

      普通類接口抽象類

      可以直接實例化對象不可以直接實例化對象不可以直接實例化對象

      可以定義任何成員只能定義抽象成員方法和常量成員

      方法必須定義為抽象其他和普通類相同

      可以被繼承類可以實現(xiàn)接口,且可以實現(xiàn)多個接口可以被繼承

      接口可以繼承多個接口抽象類有構(gòu)造方

      法,接口中不能有

      抽象類有普通成員變

      量,接口中沒有

      抽象類可以有非抽象方

      法,接口中不能有

      抽象類可以用public、protected修飾,接口中只能public(默認(rèn)public)

      抽象類包含靜態(tài)方法,接

      口中沒有

      接口中的變量只能是

      public static final,抽象類中可以是任意類型修飾

      2)相同點:都可以用于描述(封裝)事物的,內(nèi)部類分為哪幾種?分別如何創(chuàng)建對象?

      分為 局部內(nèi)部類,匿名內(nèi)部類...3種

      1)外部類名.內(nèi)部類名 對象名=new 外部類名().new 內(nèi)部類名()

      2)外部類名.內(nèi)部類名 對象名=外部類名.new 內(nèi)部類名()

      3)....不記得了第3種

      匿名內(nèi)部類

      二、集合集合的定義?

      集合:用來保存一組數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)

      集合的父接口,實現(xiàn)接口,實現(xiàn)類,實現(xiàn)類的常用方法是什么?(建議以樹狀圖畫出來,便

      于加深印象)。

      Collectionlistset

      ArraylistLinkedListHashSet

      TreeSet

      1.List集合List集合的特征是元素可重復(fù)且有序 ;我們可以把他看成是一個動態(tài)數(shù)組,一般通過下標(biāo)

      訪問

      ArrayList和LinkedList最常用的兩個子類實現(xiàn)

      1)list可以使用for循環(huán)遍歷

      for(int i=;i

      list.get(i);

      }

      2)list的淺層復(fù)制

      調(diào)用ArraryList.clone()方法

      注意:不能使用list.clone(),clone()方法是Object類的方法,list是接口是不能繼承Object類的2.Set集合:

      不重復(fù)且無序集

      遍歷set只能迭代器,用迭代器遍歷集合遵循的操作原則:先問后取。問一次取一次。Iterator it=set.iterator();

      while(it.hashnext()){

      E e=it.next();

      }

      3)map表

      Map存儲數(shù)據(jù)使用key-value(鍵-值)對的形式存儲數(shù)據(jù)的。

      對于Map而言,要求key值是唯一的。value值可以重復(fù)

      獲取數(shù)據(jù)時,使用key可以獲取其對應(yīng)的value

      遍歷map有3種方法

      1)遍歷key

      Set keySet = map.keySet();

      for(String key:keySet){

      System.out.println(”key:“ + key);

      //可以根據(jù)每一個key獲取其對應(yīng)的value值

      int value = map.get(key);

      2)遍歷value

      Collection values = map.values();

      Iterator it = values.iterator();

      while(it.hasNext()){

      int value = it.next();//不能采用 map.next()

      System.out.println(”value:“ + value);

      注意:通過迭代器在遍歷集合的過程中,不能通過集合(即不能采用 map.next())去改變集合元素數(shù)量

      3)遍歷鍵值對

      Set> entries= map.entrySet();

      for(Entry entry : entries){

      //獲取一組鍵值對的鍵和值

      String key = entry.getKey();

      int value = entry.getValue();

      System.out.println(key + ”=" + value);

      Collection接口方法的定義

      這里我主要列舉 Iterator iterator()方法的使用

      Collection提供的方法 Iterator iterator()方法來獲取迭代器

      Iterator是一個接口,定義了遍歷集合應(yīng)有的方法。

      使用迭代器遍歷集合遵循的操作原則:先問后取。問一次取一次。問:boolean hashNext()

      ?。篛bject next()

      迭代器可以將取出的數(shù)據(jù)刪除掉

      刪:remove()將當(dāng)前獲取的元素刪除掉。

      注意:1)刪除的是next()取出的元素。且只能刪除一次!

      2)調(diào)用1次next()后只能調(diào)用一次remove()!

      下載達(dá)內(nèi)學(xué)習(xí)心得:Oracle_11g常用SQL語句(高級工程師必備)[精選五篇]word格式文檔
      下載達(dá)內(nèi)學(xué)習(xí)心得:Oracle_11g常用SQL語句(高級工程師必備)[精選五篇].doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦