科帮网-Java论坛、Java社区、JavaWeb毕业设计

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Java初级程序员面试必备的基础知识总结
总共48086条微博

动态微博

12
楼主: admin

Java初级程序员面试必备的基础知识总结

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    9#
    发表于 2014-12-03 12:43:14 |只看该作者
    CSS
    ( U9 J2 k$ `, n7 m6 _1 {) i $ R6 a: k# S0 f  [- m- z/ a/ ^
    & u9 \% L: ~6 ?4 B
    如何把样式表加入到html页面中: O' t. M; ?2 c  i  q1 n
    在文档<HEAD>中用<Style type=”text/css”></style>定义;
    + n3 G' x. l& I+ H. s# f9 z' E' R  A; t& J/ x, a' |8 I' v& M
    使用<LINK>元素链接到外部的样式表单。<LINK REL=”stylesheet” href=”style1.css”>;
    ' ?, H6 L2 B; w" b& n( {& p% a0 F- Q% \, S) B
    ; J9 K  @0 l! q9 T5 l2 A
    1 C) r, c. `# j. A
    如何链接元素和样式,请写出4种方法,并代码示例
    ( ~" C, v. o6 E) X" `. b1、直接连接5 i  [! t  \+ |  `0 E% |
    $ L2 F$ H! S+ ]* E4 s
    2、class连接) I, d9 R9 b4 B, F0 _- `; z: V1 s, o
    ; X6 G, R; j' O. ?1 ]) ]% ?
    3、id连接5 r) Z2 x, Q0 R" e
    - r# {0 o( H  E' [
    4、元素的style=””
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    8#
    发表于 2014-12-03 12:43:02 |只看该作者
    JavaScript
    $ j7 J1 f, K/ F+ \# ^ 3 c* L) k7 p$ y9 p+ z* L

    1 S1 T0 a% @5 C6 t7 K什么是Javascript
    ! A' C5 P7 C) }& g( s- lJavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。
    7 d" }; r% j9 a% w6 q  w7 g9 C$ o- ?/ M& ]2 Q" R% G
    ; z7 J( V- ]) N9 ^* R

    8 c# D, u! E# w, ]6 EJava和Javascript的区别% D1 Y. z6 g' ?" `! ~2 V
    1、基于对象和面向对象) ~8 t0 H, u1 O5 V% e

    $ A# N/ j: I1 G; n" L" nJava是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。0 t" O8 t- {8 @0 U- x

    - ]  \3 G+ C* r* |" m+ O- r  vJavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object Based)和事件驱动(Event Driver)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用。
    7 _8 z, f$ c8 q* S/ l1 ~% r+ x& v7 y9 i$ F$ \8 v: e. E) g
    2、解释和编译
    & v# S) I: j1 T* p* A: T5 q* d# S# W4 u! f4 q6 r( m
    两种语言在其浏览器中所执行的方式不一样。Java的源代码在传递到客户端执行之前,必须经过编译,因而客户端上必须具有相应平台    上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。
    . @9 n5 K! L. a8 n: y% R  V1 N$ X
    JavaScript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户编由浏览器    解释执行。
    ) s- J* N* R5 Q1 r% N& E- T+ p6 {; N8 C" \6 ]. C9 M5 I
    3、强变量和弱变量
    ; T3 {( }3 m* s" z0 C$ V  c: C+ V4 a$ A+ L% I7 p6 K
    两种语言所采取的变量是不一样的。4 K+ U/ s2 Q" X2 K) l9 `6 |
    ! T. I0 C" [2 Z3 b  Y9 W2 P* r
    Java采用强类型变量检查,即所有变量在编译之前必须作声明。( |0 B, C( y; u( C& w' {# r

    # ]; z0 S2 W+ {  h( N2 C6 KJavaScript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型,
    " P6 v6 |2 |$ W, J3 g
    ; |$ h6 [# ?5 ?9 K4、代码格式不一样
    7 v) {' U; ~) w2 {# Z* M# q3 w2 l! Z! [* C* L( \0 s7 g  u7 Q; G7 {
    Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,其代码以字节代码的形式保存在独立的文档中。
    - \2 b. C8 a  ]# N0 @( b' P1 m0 R* p' e# Y# O
    JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载。编写HTML文档就像编辑文本文件一样方便。6 E" a; ~! O5 \2 V: x& x

    - Q+ H, S! N. Q* Y8 q+ O. o. t5、嵌入方式不一样- V: ?# y3 |4 C5 v
    4 F# w! Z6 {) x( \
    在HTML文档中,两种编程语言的标识不同,JavaScript使用<Script>…</Script>来标识,而Java使用<applet>…</applet>来标识。1 F, S4 c0 i9 J* Z% t
    3 J* M# l( a$ @( y
    6、静态联编和动态联编6 d0 ^" B* O* T+ z. p

    3 l$ s8 R6 H0 t# {0 sJava采用静态联编,即Java的对象引用必须在编译时的进行,以使编译器能够实现强类型检查。
    ) I( m. x+ D4 N1 }: o
    , a5 {  c. i, J0 N1 g/ rJavaScript采用动态联编,即JavaScript的对象引用在运行时进行检查,如不经编译则就无法实现对象引用的检查。' q8 c/ |; t2 c" U
    * t/ T' a$ {- h$ Z& T6 z

    # t8 _% W3 i6 W  u6 B2 J6 F- x5 ]- A% R: d
    Javascript的运行环境
    & g$ B, U+ W4 q$ S( v  A具备javascript运行器的
    - p3 T2 r2 D5 z0 s. o9 R: Z- n3 f$ c7 q

    1 X( h1 m& E  W  E& d) }" A1 c- b* c( R. Y+ K* G" q
    如何在web页面加入Javascript,请写出两种方式并示例: r" z. K4 m" U7 T  F
    <script language=”javascript”>: _/ R) _; F  q0 j/ G3 r* I

    & P' q0 L8 P% X% u. B5 zalert(11);3 K+ i( T, s- a) |+ y0 J4 r

    8 `& L# r" j, g5 t) A</script>
    % V% v' l5 p% t" u' W: o$ _) p, ]! R! B  g: D% r8 |
    或者. E; f6 Y$ L; x: R8 x9 n- Z( m( s

    ) J! u) p, ~+ j3 v: s4 L<script language=”javascript” src=”/test.js”></script>8 a, i# V0 [$ |- J: _1 g$ e

    3 U8 h$ D+ k* T- \( P/ a 1 k% Z) q- e$ x6 q5 O9 J: x

    : o7 m0 c% E& N) z" s6 s5 h写出Javascript基本的数据类型. o/ O- f# c+ E& F. b) b& Q2 J
    整型
    0 A& N- _) f9 O, L, x5 M
    9 V- J+ I" g  {8 l; g实型
    % T! }) F3 t* u  P& R$ {" `# u- h. T
    布尔+ C' T5 n& [: S: M- j* s

    + E& a' i$ X0 e字符型0 N! n, R: ]- G  Q. c) d% ^

    9 F5 V" u6 n5 x. k/ P2 K3 Y6 _+ C空值
    1 z) `" n; }4 ?- W: `, o# s. [% g  Z. v. d. z" o4 r
        特殊字符
    , g3 n6 r1 H; p' S4 \
    & C+ j& ]$ |7 E7 J. x. ~5 E0 b6 e
    / w& |, C7 W" X  e
    / P7 |* K, R- P- G+ h% I6 D% QJavascript中如何定义变量,有何规则5 M6 z# o% l( S( o  O+ y
    必须是一个有效的变量,即变量以字母开头,中间可以出现数字如test1、text2等。除下划线(-)作为连字符外,变量名称不能有空格、(+)、(-)、(,)或其它符号。
    ( d% W1 x$ A; p; J; k  E( D- V4 o" R; J1 [1 k, n( P
    不能使用javascript中的关键字
    8 B& N# G& B( X3 `3 N- U
    ; ~2 K3 l$ W- t+ j- \ 4 Z: R2 s; |. u- j
    ; ^& B! i& c2 o9 i: O0 k; X) Q" N8 z
    代码示例:Javascript中的if控制语句的结构
    : C* g; H' L3 B0 c3 Kif(i>4){7 P9 k6 T6 s8 e2 M8 J8 u. J+ d

    + q& M# o( N7 x% y; R+ Lalert(11);2 c% Y8 l7 N  ?

    - z" a# Y% o! b/ [. J}
    - l, E" A3 a! S6 W4 Q9 N; m
    ; C3 Z( v+ L/ B6 U- D$ k
    + e; q9 G1 k) ^5 ~; f+ S4 Q( u/ v, V6 c! }4 F
    代码示例:Javascript中的for、while循环语句的结构! O) t! S% E6 Q" J; p% b, {4 l3 q
    for(var i=0;i<10;i++){
      }# n& h( z0 h7 O
    - Y# k: J6 Y% e$ Z% l) ^alert(11);+ K, @$ k( R' J" s

    % }0 l; g' i) y' X' a( }}
    # l1 ~( b9 A- P5 z3 q7 z
    7 i& e8 Z/ A# d# Z: G* c* vwhile(i<10){) o( `9 H2 A4 O- S. K2 x
    ! N! f' u3 d- n7 `$ Q0 z8 F. W
    alert(22);5 {; Y% {2 E: C( {
    , h- I& }9 y( T
    }% p9 m3 C- x, S! _- Z8 t

    ! j/ p; `9 `, Z7 L- t( v- x
    0 b7 S4 R/ J- i$ H) X1 \# C: p" k  @) H0 ]2 l
    简述break和continue的用法和功能" h: ~7 B3 q' ~
    使用break语句使得循环从For或while中跳出,continue使得跳过循环内剩余的语句而进入下一次循环。( O+ b/ C$ _- F0 M/ ?/ Z9 w
    ; o3 Q+ E5 d& i5 J  l+ U
    1 ~: |9 l. I6 W3 Q: Y2 W

    5 U# Z5 Z- M* bJavascript中如何定义类,如何定义属性,如何定义方法,请代码示例
    ( r4 m5 i$ s, b3 u- c  N  }: vfunction QuaryArgItem(){# B8 X& ~/ Q; k- }9 r2 q' K
    + J7 A" G" y/ \1 g. t' z
    this.keys = new Array();
    9 A, y1 F0 u" d- J+ T
    8 g- b4 d) m2 ^, I- Fthis.values = new Array();
    / P3 L  t  I: X: e
    8 Z8 ]- l0 `7 x$ }    }" q# v, K% |$ t7 o7 X7 t
    - Q) B/ X& X/ b. B2 f6 o( B

    1 h( P0 s. c' T4 }( ]' e0 L7 V
    0 L8 F" m$ h+ v& I& e1 V! e/ j    QuaryArgItem.prototype.push = function(key, value)
    2 Z! `5 n3 [+ w, h; L* b( x* o* A' {* [$ ?4 t8 z8 k. K1 Z
        {/ N* T- T; M# ?) n" `: E5 N8 `

    " k! I. u8 e$ ~9 q/ y- w     key = (key == null) ? “” : “” + key;
    * W, {) N! M  |' ]0 Q* L2 I) e8 `/ C" }- a2 @$ k0 L. B
         value = (value == null) ? “” : “” + value;6 j9 x- n8 b+ I

    * d0 r; n- W/ O) U     this.keys.push(key.toUpperCase());2 g/ K, ?# i2 Z) i: c+ Q

    9 j! ~% L: a0 q: i$ ?     this.values.push(value);
    / l6 H* Z0 c0 ?9 g# J, L4 b+ J4 I- j6 @8 D' {; {: v
        }
    4 \0 D7 R$ h8 C3 i+ S6 k  O( q8 R8 W7 S( x0 f( H$ ]) S5 O
        QuaryArgItem是类名
    & P" F; R7 f  k' T. b: y  x, n6 Y* t0 n( |2 M9 J* h
        push相当于方法名# T$ G4 ^: g- M% j5 @  W

    ( f6 r; n* C% t: N$ E    使用的时候: {& L: q4 _, }  {9 o" |; Q6 d% F

    " G: B) U- b. d; |( m4 k
    7 N' p0 }6 W( n5 J2 u- R        a = new QuaryArgItem();  p$ ]4 Q% ]; d3 {/ A
    % y+ R4 C& L- ]- x) i& p
            a.push();
    . T& P% ~3 l" o' b' X6 N0 B* ?5 C  L2 l7 V* W: p* e+ ~

    , H! N2 X" z5 e* A! l& T0 v+ z$ X6 Z( I2 `
    Javascript的function如何定义,有何规则
    0 ?- ^% u+ w5 n( \Function 方法名 (参数,变元){9 Y7 g$ r' Y. B2 Z  \. G. J

    3 P4 K- U7 v5 l方法体;
    6 O( ~1 T1 T7 w; T2 V- Z7 l) d' M/ g2 ^) Q, `! i
    Return 表达式;$ T. q. V" y9 x3 T& r4 J6 f% b
    5 T% w3 g6 t" C. G7 U: F6 V
    }
    + Z5 f" O6 t4 X. P1 R- a; B$ n5 c" J# C( v

    1 I2 b7 q( |& b" e* w7 v4 ?+ a1 F6 X
    如何触发Javascript的function% J; ?1 C  K) Z; ?! h+ f
    function test(){8 e- `- o. ^0 k+ E. F7 T& G2 \
    + D5 F* i+ r' {& {) ~/ [! b
    alert(11);$ l6 o! b' t8 u5 P3 {8 P
    / e+ k% i- v. C4 \/ s: h5 Y
    }: p! P! ^  ^+ \# h9 j; c& {

    " F" C( V! B5 G5 W<input type=”button” onClick=”test();”>
    " A5 r6 Q5 ]6 ]1 I5 F% M' E* w* B8 ], |9 B' L' ~

    ' ]+ o: I2 V8 ^" K6 D( y9 z2 D2 ]6 H; F# Z# U
    说出下列String对象的方法的功能和用法:toLowerCase、indexOf、subString、toUpperCase* \  \- P" G. t. m/ z6 E
    toLowerCase将指定字符串转化为小写
    ! z8 V" ]8 a, |) P: C) Z& z$ u, M2 j9 \, W* ^6 d+ U
    indexOf判断是否包含某一字符或字符串- d' b) G9 W$ {' W( z: j; \
    0 A* H) j3 @& Z% s4 d1 f3 e, [
    substring从字符串中取一段并返回
    & p: q% ]( G' ^+ X
    8 K4 N2 \) y9 `5 t( d8 j' X2 K6 s' ~toUpperCase将指定字符串转化为大写
    8 q, _$ N9 W6 D# h" [6 E+ S9 M# Z" u1 X- J7 t5 v, F; \

    " ?- d( T5 f# g5 K0 |  g! J: l" i1 t- f& \
    Javascript的日期对象是?如何初始化日期对象?+ i# L& x2 L4 [
    提供一个有关日期和时间的对象Date
    7 n2 O0 _$ V8 i6 U/ W! r3 V% E: o1 P: [9 Z
    date = new Date();
    0 N, x7 ~9 c8 n( R0 q( M6 m# O+ ^6 U7 M% c1 U* k

      L: T7 Q# _' C. y0 \! c' {+ u0 N( C" x* q4 ^
    说出下列Javascript系统方法的功能和用法:eval、unEscape、escape、parseFloat) b! u: U4 F% U% P+ I
    eval:返回字符串表达式中的值
    : N% c7 i9 F% K( V# p% r" G4 B$ x/ ?: @3 B! n( q4 q
    unEscape:返回字符串ASCI码
    7 U, S" f, ]. M0 \& y9 t6 k/ i) R- O; V: O% ]+ m1 R3 A
    escape:返回字符的编码
    4 l1 P& S+ M; Q# q. d
    " Q7 Y* b* ?6 pparseFloat:返回实数: }: V- r/ K( x) o- i
    ! g0 d5 V2 Y' X6 p9 v- y5 u

      W: ~+ m- o% ]& [! p7 V, d  t, w9 W
    Javascript中如何定义数组?如何初始化?如何取值和赋值$ p  O! d2 F$ V: _
    var arrayName = new Array();
    % G. w+ L  y% d1 A/ ?. f% F
    $ f  `/ B1 E1 u; |# g    Function arrayName(size){
    % e, `0 l, }* I* Z$ k
    % ]  T% n. |- S% q& ?, V$ d, B3 s        This.length=Size;
    ( E0 l" \3 C8 F4 r- L4 E- O) E: Y2 }- C& V
            for(var x=; x<=size;x++){) p" g. o$ x1 l2 k* X; E

    0 F- ?, {8 M- b6 D5 o# _, H8 }( r            this[x]=0;' z  F3 m) A3 N% i

    ' u3 G& H; g: H) L4 m" ^5 d" N( E        }# A4 X- X& D/ a' c; V
    - S- |0 X0 S0 d: ?6 z" R  \! A
            Reture this;. }& f, \3 O" B& ?8 R" T
    % v+ O- m9 j, p& m# J4 ?) E1 ^
        }4 X9 c+ D. M7 Y- m- d" j

    - F) h) p& E" } ; v! r3 C% `3 c! T' W' g1 |& u
    : E9 i3 @( Q3 R  b
    简要描述Javascript中下列内部对象的功能:Navigator、Window、Location、History、Document
    # g7 [. A$ A2 J  y; ]0 [, jNavagator:提供有关浏览器的信息$ C* u9 j4 u8 j7 W5 g

    " k5 Z: @/ H+ [  NWindow:Window对象处于对象层次的最顶层,它提供了处理Navagator窗口的方法和属性# n2 `- V$ K  G* G

    # q$ q6 w1 L, }0 B7 |Location:提供了与当前打开的URL一起工作的方法和属性,是一个静态的对象' Z3 Q4 p; R# @3 c4 t9 [" I# q

    ; N$ G3 `. ^$ t1 R. pHistory:提供了与历史清单有关的信息
    + `$ d- u5 }5 x# C. {. U: D# f: k) S" n, i
    Document:包含与文档元素一起工作的对象,它将这些元素封装起来供编程人员使用
    # p% l) P9 d- ?# d  I% G1 M) @1 W: z8 I( P) y

    ! \: L: ~9 B7 ^( f8 v" v/ e6 x: W. n& b
    如何利用Document来从页面上取值和赋值* ]" Y* [- R3 [- p: @2 b
    取值:var a = document.all(“text1″).value;
    ) F1 q+ y: n) d7 e2 A1 P  K1 h8 e, y1 w7 ^; ~" N
    赋值:document.all(“text1″).value = ’123′;
    ( T& @7 S& \) [( L% a) f
    6 f! o: F# Y6 D: ~- G9 W
    0 c' D0 C1 f, e* _: F) ~
    5 Z5 C1 {( f) y+ C简要描述Javascript对象层次结构9 V* t) r* T( }  t
    window–document–组件. `6 G9 ]* a' Z5 Y3 T  d- g& U% |( c$ Z
    8 G  N/ x3 H& f: @$ ^
    , R( m7 @4 i  W. T0 c

    1 `" F  I- A7 i3 W$ \说出下列常见事件什么时候被触发:onFocus、onBlur、onSelect、onChange、onClick
    0 Z0 [; f; b2 Z# V. K- V1 monBlur:当失去输入焦点后产生该事件
    4 ]* r9 D" C- j! W2 v( z3 M. A; c& f2 Q# {8 H$ t
    onFocus:当输入获得焦点后,产生该文件' f% m% X3 A( @' j* X

    2 J/ w6 f1 R& _0 i; N. D* honchange:当文字值改变时,产生该事件
    0 N+ D$ o5 R$ i: u  v/ w; W  T+ `  O' ^
    8 K- W5 M: I5 b- f1 Eonselect:当文字加亮后,产生该事件7 R5 D" Z  x/ }7 j4 _

    ( j9 b$ y6 u' R- f7 `3 k8 J- ?( GonClick:当组件被点击时产生的事件
    ; [+ h; k6 \1 w* x
    % Y9 G) m) O0 W8 S( n. A
    : P9 q) D' j3 J# H
    : W1 M7 B: G7 ~& k( R' q; j, ~代码示例:使用Frame作一个基本的三分页面
    , V0 g- t% A% n<HTML>
    7 z+ _; ~; y' ?
    9 p. @: p+ V. Z% _5 K. l0 y8 ?9 t( j<HEAD>
    , w# o! r' c5 m9 O
    % f0 T2 O) ^1 D6 T7 Y9 p4 w</HEAD>2 A! `+ q& r' L0 E( m4 G- R

    4 v! n, B1 X6 P8 G- C1 ^<Frameset Rows=”10%,90%”>
    8 X+ g6 m  m/ P5 f9 C  j: w2 ?
    0 ^/ K& U' r, e) l2 ^" n, r<frame name=”top” src=”test1.htm”>
    ! e" h6 U+ r; \" L/ E* o- \8 d0 H. K8 r/ A) ]" Z$ W% q9 W& H
    <Frameset Cols=”40%,60%”>
    5 `; |& \; X0 z: I. W. w; g) B, w# W- a& l0 e9 S  E1 c
    <frame name=”left” src=”test2.htm”>
    ( ?% N1 g' h1 b# T; s! ^
    % ~! @$ z( W: T& T" n7 [) [  S/ z<frame name=”right” src=”test3.htm”>; j3 ]& p! A6 {

    3 I; U! r( n/ T' k# ^3 W</Frameset>
    1 i: v- J' z) D$ T4 E9 n) c/ P
    # @) Q8 u$ f9 j, T! v</Frameset>, L/ l2 j+ ~9 I$ r0 j# J: b

    # @) E* Q2 P- A) H( G9 f; W' p, t</HTML>
    , m6 V4 w6 d: Z4 ?) G7 c
    5 t1 o( V, w% f7 A6 j! F1 k2 ?1 i ) `% r; C3 _1 i
    7 J( C$ q; R" u  n( I* ~$ L
    框架如何载入页面) F# h- t  r6 S7 R/ P4 g$ n
    <frame name=”left” src=”test.htm”>
    # ~5 y* x5 D% w1 v
    ' h6 h" w6 w! Y9 ~7 Q# }+ I
    * |: e7 Y" c: o2 D9 R) U  \- l4 d" T. G4 g
    如何从框架中的一个页面访问另一个页面中的组件
    + J$ [0 x1 K% m9 A- Avar value = parent.right.document.all(“text1″);
    ! }1 |5 Q$ h7 j! t7 [$ o9 v1 M& C( `
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    7#
    发表于 2014-12-03 12:42:47 |只看该作者
    awt、swing5 Y/ ?$ W. q$ C& h( @: w
    什么是GUI中的容器?什么是GUI中的组件?# |+ U4 r, Y/ U5 K. Y7 l7 Z
    容器:能包含其他container和其他component的component。
    ' c, k* o  p" T6 \" u5 ^; }
    2 K8 t6 H( t& U6 W- S* E/ T组件:在设计上能实现一定功能的封装体;
    . z2 W, k# v0 U
    $ G2 h+ P5 r- n) K8 v8 ~  M8 l1 K8 W $ y' m7 g; {& I" _& Y6 U

    5 r! f( d. l/ h4 \1 h1 i简述AWT中的Frame、Panel和组件的关系% _! I$ P2 d4 q4 ^! r6 l
    组件放在Panel上,而多个Panel可以叠加到Frame上,Frame一般只有一个,各个Panel可以互相在Frame上切换
    3 [# F* ~0 r/ {# C) b* N
    3 X' P. B" A; r, H/ Q
    ) b; _' i2 R+ [" L* H7 q: G( a8 x+ q) S4 q4 N
    简述如何使用一个组件4 e# P! j9 U3 k2 a7 j
    初始化,加到容器中,注冊事件,实现相应的事件
    ' c& g# M+ ^& M' E! [8 E% F+ d4 v. s7 u8 j1 S
    Panel pan = new Panel();, ~) e5 Y, _/ d+ n2 A, ?+ H( U
    $ s! o' h  h8 U+ @5 n' l
    TextField td = new TextField();+ G& z% y  \. V: o% b. R  G
    : X. B' |' a) P9 Z
    td.setText(“this is in a TextField.”);
    2 p1 s) o  M, T* G4 `+ e% G, e1 l: n( S0 Z( C
    . I) @; G% F. }  h0 s' ?; _5 ^pan.add(td);, z4 }8 B$ p5 j' q, N2 {; Z
    ! O; ~8 a& s0 x; c( r# X

    - r) [2 Q) I6 `: }
    ) _9 F2 [  e; Z! E% I/ p9 c描述一个GUI界面的基本构成?( _" E9 L1 x2 d5 f) A
    Frame,Panel,組件
    9 k* u- X6 c5 |" [  `) C" d$ h7 n2 n3 Z
    Popmenu- }6 I% i6 j6 n' }' B9 \1 f2 ^/ e) t

    5 K) F2 G5 t$ u) }: y & ~. B1 n2 h# X7 @) D
    8 M8 J1 r. f2 i& k) m: o% R
    如何控制外观,如颜色、字体等?. N" x! p" u& t: [- k; e& P/ p% E
    可使用setColor(),setFont()方法5 [( V; S# W0 X* f! f7 p* w
    + q$ Q$ ?/ l/ R& r7 K# t- t
    例如:2 b: S! y/ f0 I, ~. ^+ u2 E- o
    ' \% Y. f4 ~5 l7 s4 e
    Frame f = new Frame();* b7 J3 e1 {) `9 c* H* E
    : C; o( O* w7 f. N6 V1 q
    Font font = new Font(“TimesRoman”, Font.PLAIN, 14);9 A& f+ Y9 l. Q% }8 E  c
    9 Z5 }6 p3 c: U( k7 e# I% X! A3 a
    f.setColor(Color.red);
    ; A6 |5 M2 c5 g# g% A5 _# g/ p0 Q& I" v( z
    f.setFont(f);
    : ?+ i" |' s  @& U, G: ?/ ?" t  t1 [, Z1 p6 o% p3 j, F6 e6 P

    * M6 W: t3 J; ?# |/ F/ X( s. H$ g
    . Q4 [; F, }* w5 W  t$ K' O% E4 u, x什么是布局管理器?9 r$ r) X% P+ Y& s0 d3 k5 n$ r# {( q; M
    用来管理GUI界面中组件的分布情況,负责决定布局方针以及其容器的每一个子组件的大小
    , d6 [% B- g7 b( r5 |2 }& m4 q& t3 |$ r' S9 C
    / f* Z2 _0 F& \& F4 E' ^' y

    : ?2 W. ^  t& r/ C3 v3 `描述每种布局管理器的基本特点# S1 x. k# Q/ G' |/ s9 _
    FlowLayout 从左到右分布,排满推到下一行3 t1 {$ k# ?) A6 h
    ! f# A  n5 H6 G
    BorderLayout 上下左右中分布" J. |5 j" n4 P5 B8 x. m

    8 s/ }) u7 T2 W+ e. QCardLayout 卡片式分布. k/ f; f0 M/ m( Q3 e( ~

    " y+ L  b; @/ l# }& Z4 Z7 MGridLayout 网格式分布
    & @0 i% P8 d2 k0 m2 e2 ?- A
    , g0 I7 f' k! O' I8 MXYLayout 坐标分布5 M% r  w) A! N' z

    ( k: v5 M6 T- {$ J9 ~ 0 F' G2 L! x0 g! d' y* \3 @

    6 i. G0 Q2 z" z8 t0 @+ M; x0 k什么是JFC(Java基础类)?% C' r) b# s/ X! X/ m3 f* f$ o
    是关于GUI组件和服务完整集合,
    ; O7 E  W" n' i) \* a8 H6 `7 I
    - p- |0 b) u2 v( h. x# e主要包括5个API:
    8 G4 h) f  I# d* }
    5 f9 {, I: ^0 f+ b2 x% ^AWT,JavaD,Accessibility,Drag&Drop,Swing) H$ X. X3 ^& `( U8 v
      m9 F& j: K3 v+ t. z0 g
    提供了帮助开发人员设计复杂应用程序的一整套应用程序开发包;9 u- H9 j' W( t6 i6 {

    ' J2 b# A! d( `! ?5 g/ N0 r
    6 q+ X- e4 f% D7 @$ w& f* }# z' ^' r' }/ I# K* A
    Swing和AWT的区别?
    ; q, `3 o/ O2 }Swing提供了更完整的组件,引入了许多新的特性和能力。Swing API是围绕着实现AWT 各个部分的API 构筑的。6 u3 A/ e& e/ ?1 k; O, P- D3 H, d

    . a0 C0 n6 S& v: BAWT 采用了与特定平台相关的实现,而绝大多数Swing 组件却不是这样做的,因此Swing 的外观和感觉是可客户化和可插的。  [, }, j4 ?9 S; Q7 I6 O% W  u

    7 Q8 B+ c8 b/ R0 Y( j+ k9 Q/ D % b) V, }) D- q7 ?/ @

    2 s. w2 B, c% g! d1 d* X9 c什么是双缓冲?
    2 s- E! E5 v2 r  _. ]# q在后台进行界面的更新,然后在前台进行界面交换/ v- s  Y; d. Q( \, Z& K' x4 w1 M

    0 ?* J' J0 _0 C0 M0 A功能:双缓冲可以改善一个被频繁改变的组件的外观( n- l- m% V% y& U: u8 ?" O5 t

    * [& M# n2 x, |. L ! O1 O5 ?+ R# g2 M7 e* {/ j
    7 j( i# p+ b2 r
    描述GUI的事件机制9 }9 j+ G8 _$ \& R
    事件源:是一个事件的产生者,或产生事件的组件对象
    ( H6 y- d1 t, X8 i9 L, n
    ! x- L& a% s1 w# |事件监听器:调用事件处理方法的对象
    3 f2 S9 X  C& e! d! t) J! F
    8 Z# l  ]- f2 C$ S6 H7 A. q事件处理器:就是一个接收事件、解释事件并处理用户交互的方法。! w' A& ]$ \4 t2 l
    % Q6 O. ]) g8 e6 a( S+ }$ R/ L0 V
    9 U8 F; j! y, k4 v1 B

    # m% W9 q1 S3 B描述Swing应用程序的基本结构?+ Y* z; `4 U4 H; a
    组件定义9 @& R2 X  k' k0 a! O* x$ [

    1 z1 C/ ?6 A5 C# b- N9 @% P初始化界面
    & s- K, ~1 X5 `  q# Z/ N( X' A0 t2 m5 C+ K: p( \
    各种事件处理方法% `& i) T" Q2 z! E( ~
    $ D/ m4 ~: j8 n3 [( D/ [
    各种适配类
      G! E. A: |1 e' p8 Q) B1 h, k  |- _: K9 a) i! F' B  L

    ! b, a9 j# i7 I/ `
    & |, J) ^& u* S" p0 l描述表现层的基本功能?3 ]9 v5 ^4 N( C2 h+ b
    展示数据2 p  `2 m3 ^" D6 Z8 _' {
    % h& W5 ?  t$ K! v7 P
    人机交互
    5 n$ w2 B* @6 d5 C( u* x6 q/ f# [0 p+ v: c
    收集参数、调用逻辑层api
    8 t2 D9 T. a" X+ C) t1 M8 U7 f* ^7 C+ B( c3 k
    & }6 [/ m& }1 J: b8 ~- H
    4 X4 G4 e: a) Z$ O" o$ I  w: f
    描述在开发Swing应用程序中,一般都要写那些代码?都写到什么地方?
    ! W' u3 p1 b# X. y  n6 j; k/ u一般要在类的初始化的时候给组件赋值,写在jinit的方法里面" v+ T+ t# T+ V* T: g( Q: w

    & m& @2 K4 H/ k' x. f2 s一般要在按扭的事件处理中写收集参数,组织参数,调用业务接口的方法: V9 S3 w, R2 E, A/ P% m  Y
    ) E" X) @3 U$ e5 m: ~3 R7 E/ B. U

    0 L# c6 K/ x8 Z4 Z% \! M
    0 b! m/ U" E0 ?对于GUI组件而言,最主要的方法是哪些?! O* m7 k4 X7 q. }
    初始化
    % x) x+ T. G6 a, X, b
    6 G5 F5 D! h7 [! ]5 n如何给组件初始化
      x0 p) d3 t' v1 j  n
    7 e( I: l- v. A- Z8 p3 z! C) ?如何从组件中取值
    . @, B1 M2 }- L  T  N! a6 x' W1 y$ Y
    设计组件的属性
    9 p/ G) O4 L6 {0 J4 `8 h
    ; G. ]/ }. z1 n0 o1 K
      E# C% T1 W$ g3 [- r
    9 m( u# b: F/ N如何学习GUI组件的用法?+ c/ L! _6 \$ F$ s+ e
    主要学会组件的定义、取值、赋值的方法
    ) Z4 T) D2 M3 \1 J* }$ H6 L  y5 P* D% Q3 j0 }/ R4 o* n+ I
    类比学习
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    6#
    发表于 2014-12-03 12:42:32 |只看该作者
    设计模式
    , B/ {, c( y1 U  Q0 J  m7 g什么是设计模式?; _+ v: ]7 _/ |
    就是经过实践验证的用来解决特定环境下特定问题的解决方案。
    5 }' Q( |- b  k0 S4 c, A& s, j: d* L) _( F  i

    % i8 [* v1 j$ h6 v
    1 @. \/ R  M& t1 L
    6 l1 o1 z5 `1 O) t2 g: |
    & N4 ~# b; D+ g% h( F/ f设计模式用来干什么?
    . c; {% V7 Q! F# U寻找合适的对象. j) j  }/ i+ ?
    ' ]$ b6 D. N# ^: z6 @" [% j' i
    决定对象的粒度7 `$ ?/ }1 o6 i5 Q
    # v$ M, s0 C+ x
    指定对象的接口
    3 G9 y8 B4 x" e% P6 w* e; P
    / {( @4 s  W/ X描述对象的实现7 ~7 K- ^3 S/ Q* f& ]

    : X& t6 r' A6 ]运用复用机制* P: D! Q. E' W- V3 k
    2 L6 x3 ?, R7 L! C
    重复使用经过实践验证的正确的,用来解决某一类问题的解决方案来达到减少工作量、提高正确率等目的  u3 c9 x; e2 Y& f$ o  Z

    # o/ G3 {) D( N4 H& U ; P1 c+ [5 Q$ r
    ; U3 p+ g. y% S
    什么是对象粒度! L) m" Z& s: z) j1 {4 y
    对象中方法的大小就是粒度8 k3 z6 d% R. t+ p9 c

    5 x8 Y- y! L9 L( J$ G5 j
    & `' h( u- \! O4 @2 \# G" K  }: }- Q9 L( q
    基本的Java编程设计应遵循的规则?
    ; X$ D0 R4 G( _) p8 z2 U面向接口编程,优先使用对象组合
    " V9 h. I7 R2 p/ _
    , V# \7 y5 Z/ ]6 d: C ( Z/ q8 f; O5 R% Z8 L
    / @$ g+ ^2 ?) c! z
    设计模式的应用范围$ E6 s$ ?5 z: o
    所能解决的特定的一类问题中$ j" @* ~" i  F' M

    2 `: A+ T& X2 h; E' R" V% s
    / N' F; k% j8 O* I4 V
    4 E! \# R: z* T' N8 U5 o简述什么是单例模式,以及解决的问题,应用的环境,解决的方案,应用时应注意什么?
    . H/ Q* ^" ~) t* j2 Y7 m解决的问题:在任何时间内只有一个类实例存在的模式。1 Q1 V) E! Z  O  G) n

    2 R& L  i- ]6 S: q应用环境:需要有一个从中进行全局访问和维护某种类型数据的区域的环境下使用单例模式。
    ' D& D1 v4 x5 D" n/ K3 _
    . [0 O0 E5 b% Y; Y& |- q解决方案:保证一个类只有一个类实例存在。
    - E: d5 v% H% a8 L0 V) r) ~$ e
    ) n; ]  Y5 I8 Z# w本质:控制实例的数量。( E1 M$ O* [" e! Z, o
    ' m( o4 v4 \: u/ j% q
    注意:要合理的使用单例,避免单例成为瓶颈。
    " j7 o, P/ \8 e7 k9 m
    # F  v0 }0 `( B4 E
    6 @! S7 @( C7 v; ?3 M4 S/ J
    7 |4 Q" v% }4 X/ ~  V9 e1 u& p! I 7 i" W3 F/ B) |% X
    4 T) t2 W# a: }
    % V, o3 d' r* U6 ]( v( N3 u

    , Z; J! g9 w1 f! k9 W1 g; E代码示例:单例模式的两种实现方法,并说明优缺点6 H" w- Y7 G# L/ F/ v
    public class Test{/ U& d( g0 i4 D* |# u

    5 l" @$ }' M% ~; B7 \4 `7 [    private static Test test = new Test();
    . [0 O2 }4 j/ [' w) m8 ]3 v- {, z/ z- K9 ^2 u5 N  i( f: v3 [
         public Test(){4 O7 O. J6 b' C6 X$ v6 m* x
    5 w5 E% c/ g. P
            }
    9 T3 M1 ?. S( k' |2 _8 {
    9 G2 n, c1 G% f/ M! u& H+ N
    6 I! U7 J& M% d! p8 P. m
    % c9 t1 {' N; O7 s- |. f     public static Test getInstance(){
    $ z/ n( e) r5 k; u: Z2 n
    * \( H2 W0 _: g- E; x         return test;0 P4 U7 V1 a" Q& W' Y+ V
    . Y# K7 y9 J% T, A
        }
    8 P- N3 I6 y: s% g- ~) w3 G1 X- d& ~1 D3 R4 v! p0 H: t
        }/ A6 ~+ Y9 o" ~) v% T  Z9 L  K6 s
    # R! T* n; t9 ~8 A
    public class Test{% k& G) M3 w% F0 R) ^

    : N; O! ]  L/ Z0 {' U5 g7 d     private static Test test = null;
    9 a& c+ M9 m+ P
    , R( l! q: F) [) u' Z* e        private Test(){
    - e7 H. L( Y9 |* @, s3 ]( y3 u: ^5 d3 O. F
            }
    5 P3 E- q: u+ N  {+ L
    5 }  o; {* M9 w$ L        public static Test getInstance(){
    7 n2 n. f# p  N- _! u  \% ]( G6 R  f" |6 @
                if(test==null){6 k8 s" d% P! z! T4 e

    3 E3 m5 J( d% _                test = new Test();
    ( X$ m3 k. h7 T& [  z5 k4 m* @& O7 F; a2 p1 a
                }& o5 ~+ A  |8 n( R/ W$ k

    * y8 R; s% T& ?: K        return test;- Y/ Y* f$ B- }: N! Q

    2 Z- A5 B1 \! N* R! A        }
    # t4 l4 R; T" H7 m5 v1 V! i: d2 s2 e6 g6 h: r: K( x
        }* E; Z) Z7 _5 l- q* ?
    ( v7 m! R3 {7 S* o; e
    第一种方式:装载类的时候就创建类的实例,用空间换时间。1 o# D' r5 g0 v$ x& Z

      v1 Q+ X! Y6 K. P* G第二种方式:延迟装载,不需每次都创建一个类实例,而只是在第一次使用时创建,有效的利用资源,用时间换资源。, r/ k/ ?' Y1 O# ^  h2 }

    / ?1 m8 _5 Q0 B) ?! ]. \5 w$ u
    0 c% |4 Y; c% t7 j  T; n. |
    2 G9 G+ Z: v) g简述什么是工厂模式,以及他解决的问题,应用的环境,解决的方案,模式的本质/ S* e" ^  w8 X* v
    利用工厂来解决接口选择的问题的模式。
      b. }$ w" M2 E( o9 H5 s3 K, V/ d$ {# h  E+ Z. ~
    应用环境:当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定,创建的对象时,就需要用到工厂模式。
    - `' _9 ^$ y# W& j) r. U6 k8 T( @' h
    5 a/ s! D4 u" P* d/ M, ^0 d1 [解决方案:定义一个创建对象的类,在类的方法中决定具体实例化哪一个类。9 {0 J! k6 B1 J: _0 N% C
    9 T( O. z: {0 s
    本质:就是根据不同的情况来选择不同的实现类,重在选择。0 b$ I/ ~- \% j5 g0 m6 y8 _
    / h/ D3 T8 `* D* J8 F( S
    - X+ q; Y$ ~; a3 Z! n
    . u0 \" x3 ?) \6 I! v% x* j* B. M
    代码示例:工厂模式的实现方法
    6 T* k. O$ x/ R0 Z+ s单独是使用工厂:
    4 e& L- r9 Y( |7 W; P+ z: R& L4 h  h2 S( C  V' s- K. D3 i" ?! ]
    public class Factory{
    - D: Q/ u" J) X7 g7 U6 C) D
    " |- S8 ~3 \' |) r1 C9 K  M     public static Sample creator(int which){& h) x$ t0 L9 ^2 t, A; }0 G0 ~

    $ k! O7 G7 F. L         if (which==1){
    : X  U; ~7 l2 T0 v2 U6 _/ T& B2 C
                 return new SampleA();1 T! P$ X( _1 r2 q7 Z$ U) _

    2 {) z, g; D. g        }else if (which==2)% P: t/ v" H9 H! Q" ]. M' ?" t. t

    ; q9 I# W/ X  S# {             return new SampleB();
    9 L0 c- j4 E4 o1 o% o
    ) e/ t3 F8 h& `# B) Y1 _" x         }
    % l4 p6 n: X# s9 H: u- R
    9 `3 C. v2 L3 s# u5 F) M& `) e        }% n. e, W# L, F  E( w1 e. {1 x! P! @
    ( R* Q4 Z3 K" D, b+ R; I, A
         }# q; s' j+ P3 @0 P& C
    . e: i3 b* n/ I/ K
    工厂+单例:
    ; e( O4 u0 X4 [! V5 e  |
    ( ^, U: b" z" Y, m4 npublic class MyFactory{- B9 y+ o8 @$ m; L3 ]' l
    ) b2 ?6 w# a* ?
    public static MyFactory f = null;; Z; \& f! _5 _+ ]" v
    # t' e) K/ H' V! @$ m1 o
    public MyFactory(){& t/ u: w% l4 f! F' ?2 U
    5 p0 L. C4 C# z+ M3 y+ b
    }' A  N7 P& ]  t( p6 d; P
    7 y6 \- J# e% g
    public static MyFactory getInstance(){; j# C! S! H" |9 h  Q

    & r  P! T$ c% q( G" E$ W+ c' Hif(f==null){$ l( l$ V( P7 l$ N6 l- O
    & B) ?, F7 j& t8 [0 e( \
    f=new MyFactory();
    " A: s  Q/ Q. ^2 j' E
    9 B5 }: `; c, B% w' R}
    ! N2 _+ z( `. C1 N' o; H4 v! t% v2 {/ c4 v3 M
    }
    # N: E" c  {! ^3 \' I' O
    - t9 O, n! b; Y" K9 M' _- u( U  Vpublic DBDAO getDAO(){
    7 i* G" l: A2 H, M
    3 |3 B- w) }. |) I; Freturn new DBDAOImpl();
    / S+ G/ [) F4 P8 n4 M( O9 Y7 \5 p! E3 u9 ?/ Y+ S7 a5 X3 k. \0 r
    }
    1 d  n4 Y4 v! R: x/ H) e# O
    + V( J* r+ _4 t* ~% I4 B% c}
    ' T/ F: [3 m8 l
    , `% H2 m. `5 l  G0 {+ k
    2 a( ^) V3 d! C* d
    1 a/ y3 K  w6 M+ {简述什么是值对象模式,以及他解决的问题,应用的环境,解决的方案,模式的本质
    ' @3 B1 A* R7 t$ w& o# \: e用来把一组数据封装成一个对象的模式5 ]7 P& F# Y7 G  @) Y2 P- R6 P

    ( P/ v! z  P* t3 `解决问题:在远程方法的调用次数增加的时候,相关的应用程序性能将会有很大的下降) J! Q# E1 J' G! |1 d8 S) `

    ' R/ \3 d9 q- [解决方案:使用值对象的时候,可以通过仅仅一次方法调用来取得整个对象,而不是使用多次方法调用以得到对象中每个域的数值8 Y6 v  ^. X! z4 @: |7 z

      D  a8 C6 X( F! o$ x本质:封装数据。8 {% A9 y- U; Q  f; i

    . N' H$ [  o, h  A& T% [* A
    $ z( @1 G" S2 s9 o0 u4 U6 d+ e, [' n% R4 |
    代码示例:值对象模式的实现方法; k) m" Y) O' {( W; l/ Z
    步骤:9 ]9 t4 ~3 ^" A2 I0 v, B% N7 v% L

    5 P7 m, H1 P* _ 5 S0 p1 w8 n1 p+ \

    1 Q9 T3 B: q$ l" w. u: O6 Qpublic class UserModel{
    3 Z) ]4 d, C, |  T8 Y. f
    ) A0 T/ y5 t5 s6 _" i         private String userId;
    7 U% h2 }1 t# C$ {* G
    . f9 @% j! F0 G, E% {, |         private String userName;
      n+ D  X) I$ I% U. x7 u2 g
    . C( G# W. J- D9 }* _4 B% z            public void setUserId(String id){4 G6 v/ v3 X& Z7 P' b

    4 {! U; }( P$ f8 ~/ I2 k2 `3 e5 h             this.userId = id;/ b0 S" f. [$ h' L4 K! T" S3 z" Q

    * o+ l' d4 S& Y! Z         }- P8 j8 K" V# K5 B$ O" r1 ^
      z9 I+ v, [) Y
             public String getUserId(){
    + \5 ?2 i: p" I* J- H5 G* D
    % t& o$ N, ~- R* |8 v. F- O9 ^+ M             return userId;
    7 |) `) Z! y2 t3 b& W
    7 ~( C& h* w  m: t  B) Z( c3 g         }8 G4 o$ t5 D  h7 D9 b  B
    / i, b. i. r: G! w1 q8 n1 {& _1 Q
             public void setUserName(String name){" E3 \$ u  [/ x3 w6 Z

    : S4 D3 N; o( Z% ]  g& v             this.userName = name;
    + y; t( ?/ C' p9 G& x2 g% l9 m, |9 z. B7 C/ m' _. Y
            }
    * h& u2 [2 v( S5 s
    9 m% S/ K1 I* Q+ [* E9 {% z        public String getUserName(){
    ! O+ @# z& e( A3 @3 a7 |" v7 S. q( S" E8 }. `
                 return userName;
    5 `8 U- @3 C5 f+ J. u  J" ?* X/ x3 Y: U0 u) T
             }
    # v4 b8 l" r+ s; r4 ?9 m8 ^' a7 P/ W8 \+ Z# G4 n. g
         }6 Y* J) t4 Y( T% ^4 u9 ?

    $ _! K; k# f7 R) s% B3 U; F; J
    6 q6 S1 `7 a# T
    * v6 R, n9 f. M# i2 d' R+ [简述什么是DAO模式,以及他解决的问题,应用的环境,解决的方案,模式的本质
    2 c! p6 q" P7 Q9 B0 `数据访问对象
    / e3 N8 h  e% P, N% D* y" Z& ~2 j+ A4 i5 Y- H& o( i8 D# b% m' h
    解决问题:根据数据源不同,数据访问也不同。根据存储的类型(关系数据库、面向对象数据库、纯文件等)和供应商实现不同,持久性存储(如数据库)的访问差别也很大。如何对存储层以外的模块屏蔽这些复杂性,以提供统一的调用存储实现。程序的分布式问题
    % v% Z5 [7 q  x5 v# f$ `
    ; ~% Z3 {5 I* l/ ~' i* t* a8 f解决方案:将数据访问逻辑抽象为特殊的资源,也就是说将系统资源的接口从其底层访问机制中隔离出来;通过将数据访问的调用打包,数据访问对象可以促进对于不同数据库类型和模式的数据访问。
    & d. f0 Q3 t6 I" h7 j5 _: ]( C% j2 F$ ^# x& N4 X
         本质:分层,是系统组件和数据源中间的适配器。(一层屏蔽一种变化)
    + a. f% _+ U  |) T$ J) _$ s$ ?4 T2 X% u( k0 H. q/ v
    / w) V) t  Q- w* j8 F- C
    ) i% ?" s0 M+ J1 ~! {, }3 L/ F/ j
    代码示例:DAO模式的实现方法: }8 |* z1 Z3 l; T6 h. k# F

    7 w, u! D; t8 v. b: _
    ; R8 o* N4 |9 O9 h% B" l4 b ' Q  }& Y, z  d3 n) R7 \

    3 c( R; X8 d  H8 w: r  _# e+ g) O什么是框架?框架的优点?7 x$ D3 D* j: b
    框架是能够完成一定功能的半成品
    ' ~0 I1 _4 e& Z. M; ~8 b
    6 o( Y2 o0 V* N4 W1.优点:完成一定的功能、提供一个精良的应用程序架构( i: y8 Y; z1 C0 L' s

    ( u4 O  S5 n$ m- m6 m  E5 K( n9 O2.框架都是以接口的形式出现
    * @( _, m( X' v7 f8 `: y% J$ i, W; J( a0 j' A2 M/ m
    3.应该了解框架完成的功能、框架的API接口、框架的功能是怎么实现的9 d# H! `+ d: x3 Q) }. h

    + K+ G' \) r: h  i' g7 ^6 X
    5 U0 ^1 Z0 M! e$ x7 E  y7 F0 D! Y9 m
    什么是开放-封闭法则(OCP)
    " i1 `+ i5 }# i6 C可扩展但是不可以更改已有的模块2 G" r* A+ ?' W$ k' E# s0 C9 X9 I

    , s8 ~0 t' L3 L$ }3 ~对扩展是开放的,对修改是封闭
    ) P  k# m7 ~" c) e
    4 k5 v" v  Q5 R& P& l5 \2 }
    / a2 c- M. @7 A; N" S- R
    $ L3 C/ {. E( ~1 R什么是替换法则(LSP)
    ; ~+ V6 Y6 C9 {. N3 Z, |使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用。3 u8 U( N+ n, N& G
    : E; m& G$ l- D
    2 j; {' s, v. q3 |, T

    . L( m+ l! W  x% p' ]1 `; h如何综合使用我们学过的设计模式来构建合理的应用程序结构9 U/ P! z' f" Q2 C
    是采用接口进行隔离,然后同时暴露值对象和工厂类,如果是需要数据存储的功能,又会通过DAO 模式去与数据存储层交互。
    3 y! W7 R- y& d, k
    , c- E' J$ n3 e8 a
    ( e" [4 }0 v6 w. s2 U) t: H) J! |, d& [' q9 \: N+ L0 O
    构建常用的合理的Java应用包结构  i' A+ Q; f+ E( E& w; X
    Ui(表现层)
    1 P+ x- e. M' j. {; s8 R, @1 v
    . a3 Y' H' G. b- Qbusiness–factory,ebi,ebo
    + u& R% ~2 l  l% ]" Z; f$ a( z! x$ _, Q$ v9 b, a
    dao–factory,dao,impl, K1 \2 ~* N: h/ q9 \

    : T  K4 x# Q/ a2 U+ a, y7 i
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    5#
    发表于 2014-12-03 12:42:18 |只看该作者
    Socket编程
      h( Y+ Q. [2 v什么是url?基本的格式是?
    5 \  \2 k2 Q% d4 q: e' P统一资源定位器
    7 |4 P6 n! z- e, j2 T. I3 s4 V9 T& q. D* b2 [) f: F
    Http://www.163.com:port: m3 ]( O* A' ?
    5 D5 N5 {# r; P/ E' o& V2 @
    2 @5 |$ S- Z3 i# S( a: B" B

    $ I1 e0 j5 u# c" W) Y' |简述IP,Port,TCP的基本功能" O/ c# e4 [8 [; ~
    IP代表网络位置. b" T5 A2 v3 Z9 L- D
    : d) A8 v- _5 Z
    Port代表端口号0 s4 e# D0 F9 ?% @! T5 q

    ) r  v0 ]6 r: S1 G( STCP可保证不同厂家生产的计算机能在共同网络环境下运行,解决异构网通信问题,是目前网络通信的基本协议
    ) V+ a2 P0 {2 {  i- H( w  y" r1 i
    1 M) P8 D  X7 S9 G简述Java网络模型的基本功能$ t4 w- b' W! Y7 n) j
    描述服务端和客户端的连接过程
    # n2 c/ U/ V- j, B; a7 H- \( ^0 w  F. z- i* J' g! r
    # z8 f  v% l3 W% |7 a. L5 j
    / v. Q0 i/ r% n& `7 j
    简述Java网络编程究竟做些什么?如何做?
    : J. l/ x* U) ^, e6 d7 m& B& W1.建立连接; g: n- g0 Y, Y/ N3 ~# g/ R

    1 ^$ [: r+ \( d/ i* f2.准备输出的数据,流式输出
    ; C1 ^! `: d# d' B+ f* l( _
    & o7 I0 T5 A% Y; ?( ^3.流式输入,编程业务需要的格式) b9 Z7 R% {8 I; K
    ! \" M6 s/ E1 D5 n/ }, J
    4.关闭连接
    1 w( g+ |2 a, `
    2 q3 ?+ o$ a. X服务器分配一个端口号。如果客户请求一个连接,服务器使用accept( )方法打开socket连接。
    . L5 B; f  d; y. v9 }5 f  e, a- ^8 B* R5 N
    客户在host的port端口建立连接。
    - b- B4 `) ^5 @
    - c; ~: Y& K/ E+ N5 s% H服务器和客户使用InputStream和OutputStream进行通信。+ j6 L: Q; X' w) P- _

    ) c. P% B' U3 b  m  J( ~
    7 c9 V5 r- Y" Z; g3 S  \" T$ j% R9 k9 k! z# `3 ^% v
    0 D" N. ~! R3 K+ P- Z' T- F$ v

    3 f) A9 `8 _1 X& o6 `
    - h  X: A2 U8 }3 S# i5 j9 T1 F: M' K+ w( @2 \  Q$ f2 f8 |5 H& q- n" c( l
    代码示例:基于Socket编程
    : g& w9 q" w/ Z5 t# R6 }7 `try {8 M" E9 L+ i9 v; @' P* J, G

    : M3 A$ q" r, s2 I2 v* vServerSocket s = new ServerSocket(8888);! Y( o4 I& E8 p0 H+ I' L! @

    ! ^6 j2 w* a- P+ u: p9 [7 g$ a4 }while (true) {
    - {: U1 f( u7 a2 P6 `9 _4 T( L% q9 J  c" `# w9 ?1 I
    Socket s1 = s.accept();
    3 `2 M9 g$ U) w  e6 n$ q( Y
    , t; n- Q7 d; B& g- q6 J" V# Y; I# d5 XOutputStream os = s1.getOutputStream();6 h/ v' L, L8 A
    ' Y3 V' _9 ]3 T7 t9 j0 S
    DataOutputStream dos = new DataOutputStream(os);0 b6 H" [/ L% B1 T( [; {# B1 R4 j

    5 _1 X5 J# M8 b( q# J" G6 ]  Udos.writeUTF(“Hello,” +s1.getInetAddress() + “port#” + s1.getPort() + “\nbye!”);. Q' ~/ v6 s1 i4 f2 y* ~4 Q  @
    " P, J, G$ p0 D, d
                dos.close();
    - S1 c# P) j8 }2 ]! `
    2 |8 t+ h/ x- v% ?, us1.close();7 E4 k) M6 r1 B" K4 d" F
    4 ^) ?7 c0 ?5 C# l% o3 ~/ G
    }
    5 l$ E7 m# o  {3 o% q" x
    2 L& T" D. M* S! q}catch (IOException e) {: k8 u  C5 R% ?+ m( ~( J2 t0 n

    $ M5 q) X: h3 H- R( vSystem.out.println(“程序运行出错:” + e);
    2 \4 ]( a0 F& w( ]. [- B6 H$ A0 _7 @/ n8 z
    }7 Y2 ?5 m; z- k4 a. w1 ~

    4 s# X) C* k0 Y5 C, b; |, B
    ) G$ A; Q4 r" Z3 N# j0 a( `, b7 ~
    ) R* t. B8 v  t. |
    5 R5 p6 H* F9 }8 j
    ( K+ e. v" s, M' {  ~1 s$ j! i 1 ?$ `0 E* \- B

    9 |2 ~* q7 G4 @3 w$ u. s( ~ : I& u* \9 ^; M" n" R# y
    3 G& O' m, i- `6 X& Q2 K$ M- h
    TCP和UDP区别
    * @! g& a9 D  N0 u$ F: _TCP(传输控制协议)和UDP(用户数据报协议)是传输层协议
    ( m9 S0 v, b7 q6 K5 B" W0 {7 D* K! w" Z7 g$ ]  {' k" _+ z
    TCP是面向连接的可靠数据传输协议,能保证传输内容的完整和准确;数据传输的辅助开销大,效率低
    ) D0 v5 Y. X6 l
      O$ V, p; Y# p* N- q# G5 b" S+ P& [UDP: 是无连接的,不可靠地传输协议,不能保证传输内容的完整和准确,对信息的适时要求比较高
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    地板
    发表于 2014-12-03 12:42:09 |只看该作者
    多线程1 G: i, ?9 A4 b3 Z* \
    • 什么是线程?" l) ^& o% X/ R9 t% {: E
      / K  w8 ]. i# K0 d8 u

    轻量级的进程

    9 y! U0 ]/ S( |0 N9 a$ @; W
    • 线程的三个部分是?
      * s$ O4 E- g% Z. {
      ' w8 ]! a8 l# a  ?! n5 o+ e

    处理机

    代码

    数据


    , I4 `# Y$ ?1 a/ n. \
    • 为什么使用多线程: @) K+ |! ?2 t! R
      - v4 s0 c' w/ S4 b

    使UI响应更快

    利用多处理器系统

    简化建模

    * ]5 ]& C3 c: i. j" ?4 ~
    • 代码示例:Java中实现多线程的两种方式,包括如何定义多线程,如何使用多线程# b2 e6 P- X2 x# D
      5 {0 K8 v2 \8 x' r4 K! n

    实现Runnable接口7 Q! y. k# r1 z9 f* N( N

        class Thread1 implements Runnable{
    7 W6 e' Z2 g' x4 _& L' F$ d

            public void run( ){% Q! g! I4 p4 r, ^7 Q0 R/ H. u

                //run里一般写一个while(true)循环/ z' z2 _" f( V8 }* V7 V

                System.out.println(“Runnable“);
    1 K( F8 x" |  P0 |/ l! v  i: y" m

            }
    6 Q0 k4 q! Y% g8 a7 W5 m5 W

        }
    / U6 u2 E  c+ S) h4 E& Q

    public class Test{2 A8 j4 l" p7 p( j

            public static void main(String[] a){% F3 c3 O6 r: N8 G# g7 {

                Thread1 r = new Thread1();  y& m7 U* c1 }

                Thread t1 = new Thread(r);
    ! a5 L6 t" d$ S9 j, ~; Y

                Thread t2 = new Thread(r);+ K. s: p: }# n

                t1.start();
    : h9 Q& z$ A9 V, Y# F7 K

                t2.start();; H$ Q7 @( c. m$ v

            }
    & v  E0 k1 @% P% m* ^

        }" o  w+ ]' D* ]: l' l" C3 W* H

        继承Thread7 p7 W1 u5 N! _

        class Thread2 extends Thread{
    5 J! `7 _" Y) \/ g

            public void run(){) a2 s& M, Z1 P: I$ S

                System.out.println(“extends“);
    , S0 m8 Y. o7 p% q5 U

            }
    : g1 o3 v' c* |& @: A9 A

        }# O9 t  \6 W$ N1 N6 {

    $ K& ]# F& f- r+ v% t8 T; j

        public class Test{7 W7 e  \+ }7 G$ |- C6 Y

            public static void main(String[] a){
    - y' x: Q4 G" n  B. S/ Z- ]

                Thread t = new Thread2();
    / z/ q2 s) L+ p

                t.start();
    : Y) r9 P6 W  d% p& b) J

            }
    4 ?2 J) r7 F* r1 G+ u# J

            }

    0 c& |( n. a) e6 F9 O
    • 如何实现线程的调度?如何暂停一个线程的运行, @  ?- B: L+ Z/ h! h: s

      4 t" o, G* s0 G) @$ U5 A

    调度用wait和notify,

    —-

    sleep()


    : A0 {5 r8 R; {3 o; i4 i& v
    • 什么是线程的优先级
      5 W+ A8 ^2 ]! R9 R2 }  a/ F
      1 e: E( d5 K' I5 o3 a2 {, F) g3 d

    判断哪个线程先执行的级别

    5 K5 t: H+ \& z8 n& N# A* o
    • 简述sleep方法和wait方法的功能和区别& f2 u$ ]7 [( b
      9 J4 r2 w6 _( P5 U: K

    sleep是让线程休眠一段时间

    wait是让线程挂起


    5 Y8 I! _4 ]( M1 h( S& L2 x% k
    • 什么是守候线程
      & Z; I' J! y% m1 [6 W- b8 U6 d0 L- I

    隐藏在后台持续运行的线程

    & f+ d+ L3 T: q1 v
    • 什么是临界资源+ ]5 g+ l" e! m" b  D, t- V8 i; O. y

      7 [9 i) P+ ^9 n7 P. b7 `2 r% `

    指多个线程共享的资源

    : ~/ J8 h; M$ D3 H) \
    • 什么是互斥锁,Java中如何实现% H5 W  s+ G9 ?/ n1 b4 q
      : f1 r% S5 z; q

    用来保证在任一时刻只能有一个线程来访问临界资源的那个标记

    在Java中使用

    用在对象前面限制一段代码的执行

    用在方法声明中,表示整个方法为同步方法。

    $ M& Q6 {* c; o4 c
    • 什么是死锁?如何避免?
      6 I$ |7 Q& O5 X* x
      & T: y3 G, X8 c

    如果程序中有多个线程竞争多个资源,就可能会产生死锁。当一个线程等待由另一个线程持有的锁,而后者正在等待已被第一个线程持有的锁时,就会发生死锁。

    要避免死锁,应该确保在获取多个锁时,在所有的线程中都以相同的顺序获取锁。尽量少用临界资源。


    6 e2 C: Z$ t/ p0 Q- ^
    • 简述wait和notify,notifyAll的使用; c  m( b/ n: k+ y
      ( ~+ q' C, h% O" T! ^

    被锁定的对象可以调用wait( )方法,这将导致当前线程被阻塞并放弃该对象的互斥锁,即解除了wait( )方法的当前对象的锁定状态,其他的线程就有机会访问该对象。

    notify使等待队列上的一个线程离开阻塞状态

    notifyAll使等待队列上的所有线程离开阻塞状态


    , b2 A- |0 ^3 O+ f
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    板凳
    发表于 2014-12-03 12:41:37 |只看该作者
    IO" s( ?6 w- k* p( U$ k# s4 H
    • 什么是流?可画图说明7 h/ @9 {: |, F. u' ~

    流是要传输的数据在源和目的地之间运行的轨迹。

    / P0 |, x/ R1 `

    + x9 z) G0 _( H
    " q$ T. h. E$ b9 f% r: ?
    • 描述I/O流的基本接口和类的结构/ I7 o4 [  j" |$ \  ~

    & c5 N% v- U3 X; w

    • 代码示例:使用URL流,读取网页代码
      ( J( N: e7 [1 F' @5 kimport java.io.*;' ~5 D5 T% a6 Q2 w' S# I+ e
      import java.net.URL;
      8 w7 v* {# k# ]* V& j( c# u$ y8 Qimport java.net.URLConnection;
      . Y( i6 y4 E! W' ^! S1 \! a. spublic class ReadURL {) _! \3 n; d. U( Z$ z! D
      public static void main(String[] args) throws Exception {
      : e; P9 z: P- u6 X# QURL url = new URL(“http://bbs.tarena.com.cn”); //
      建立封装统一资源定位符的类' W& ?5 w! _) a3 O6 y4 ^; m
      URLConnection uc = url.openConnection(); //
      打开连接
      3 [2 P7 s0 z. e3 a* eInputStreamReader isr = new InputStreamReader(uc.getInputStream());
      & `! d, w4 x6 R9 c+ L( l( n, t1 FBufferedReader br = new BufferedReader(isr);7 h; V, e. j$ P7 {: L: j4 \& x

      $ i+ _) \% _0 U/ U6 k$ U//传输数据
      $ l  y! g; ~( n4 W! Dwhile(true){
        ^) t$ E2 t& |, D# xString temp = br.readLine();
      ) W2 i2 |5 b5 {! x) M% ?if(temp==null){
      % h9 h  @* U3 f# E3 }3 S9 kbreak;3 I5 @: p' ]5 _# u/ V8 U
      }
      $ L) w& K. [. B& R9 X" o$ tSystem.out.println(temp);
      ) x- j  x" u- B}7 c0 z' {' a8 Z. x6 ]
      br.close();
      " B3 P; r- q6 y0 {}7 v& {- v- ^+ [5 t9 F" o
      }
      , d) A: ]0 ~8 L  I! ~

    " q. V) C9 y4 j1 ^1 H2 w3 q! I
    3 M' `+ W) ^6 A  ]- R  g" _3 H
    • 什么是Unicode?9 y" O' N( s( l7 i+ C3 A5 t

    是一种字符的编码方式,占16位字节,Java 技术使用 Unicode 来表示字符串和字符。


    7 d% Q$ B6 Q7 s2 f
    3 j5 O. Z+ R: p8 I3 t/ J, T/ h" G7 m
    • 代码示例:如何使用Reader和Writer来进行输入输出3 j% W1 w: b, s1 P
      //Writer写入操作1 p1 C. F& J6 t5 |( i
              FileOutputStream fos=new FileOutputStream(“a.txt”);
              OutputStreamWriter osw=new OutputStreamWriter(fos);
              BufferedWriter bw=new BufferedWriter(osw);
              bw.write(“欢迎来到java快车”);
              bw.close();

      8 y" c; ~+ R" E
              //Reader读取操作/ Z% I+ l; b7 s9 I! ?
              FileInputStream fis=new FileInputStream(“a.txt”);
              InputStreamReader isr=new InputStreamReader(fis);
              BufferedReader br=new BufferedReader(isr);
              String str=br.readLine();
              System.out.println(str);

      : ]5 P$ c$ z$ h) F
    6 J& g! u( y) ^$ E+ v

    8 T3 q* K1 G$ h' x( n# B
    • 什么叫保持?什么是可序列化?如何实现可序列化?
      " `* g0 R1 D: d3 y# F8 X+ b1 G5 J

    将一个对象存放在某种类型的永久存储器上(比如硬盘,光盘,软盘等),称为保持。

    标识一个类可以被持久化,叫序列化,也叫串行化或持久化。表示这个类中的数据可以按流式输出。

    实现可序列化的方法:实现java.io.Serializable接口。

    $ y( o$ |4 R9 o6 H6 f
    • 代码示例:如何读写对象流, W) V5 ^# z$ h" f# _3 t

    //读

    try {

    String str = “123″;

    FileOutputStream f = new FileOutputStream(“test.txt”);

    ObjectOutputStream s = new ObjectOutputStream(f);

    s.writeObject(str);

    f.close( );

    }catch(Exception e) {

    e.printStackTrace( );

    }

    //写

    try {

    FileInputStream f = new    FileInputStream(“test.txt”);

    ObjectInputStream s = new    ObjectInputStream(f);

    str =(String)s.readObject( );

    f.close( );

    }catch(Exception e){

    e.printStackTrace( );

    }

    4 _' J1 _' o4 E4 f. p( v
    • 简述File类的基本功能) I& T4 R) _. H& H+ t* K

    处理文件和获取文件信息;文件或文件夹的管理。

    概括一句话就是:除了读写文件内容其他的都可以做。

    7 U  h, r! Q( J3 f
    • 代码示例:如何使用随机文件读写类来读写文件内容
      ( o, x% \  E- c" T  @

    RW表示文件时可读写的

    读:

    try{

    RandomAccessFile f = new RandomAccessFile(“test.txt”, “rw”);

    long len = 0L;

    long allLen = f.length();

    int i = 0;

    while (len < allLen) {

    String s = f.readLine();

    if (i > 0) {

    col.add(s);

    }

    i++;

    //游标

    len = f.getFilePointer();

    }

    }catch(Exception err){

    err.printStackTrace();

    }

    1 K8 H; V- z% L' @/ D  H7 |. _

    写:

    # Y4 u% o: H( i4 w' w0 m2 n

    try{

    RandomAccessFile f = new RandomAccessFile(“test.txt”, “rw”);

    StringBuffer buffer = new StringBuffer(“”);

    Iterator it = col.iterator();

    while (it.hasNext()) {

    buffer.append(it.next() + “”);

    }

    f.writeUTF(buffer.toString());

    }catch(Exception err){

    err.printStackTrace();

    }


    6 s, @- {3 @1 R( n
    • 代码示例:如何使用流的基本接口来读写文件内容4 h& |% c/ q- |! j( ?: O8 q# p

    try{

    DataInputStream in =

    new DataInputStream(

    new BufferedInputStream(

    new FileInputStream(“Test.java”)

    )

    );

    String currentLine=null;

    while ((currentLine = in.readLine()) != null){

    System.out.println(currentLine);

    }

    }catch (IOException e){

    System.err.println(“Error: ” + e);

    }

    4 P6 P$ m" c3 O) p" q8 c% M# U7 X

    051314_1254_Java4.png (5.12 KB, 下载次数: 25)

    051314_1254_Java4.png
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    沙发
    发表于 2014-12-03 12:39:34 |只看该作者
    集合框架
    , T8 C# V. f2 R, L( m  s1 r
    • 什么是集合?什么是元素?
      " f7 S6 s! I; q3 J

    可以包含其他对象的简单对象就叫集合

    集合框架中所包含的对象就叫做元素

    % v, y) [# z3 Y$ H7 v4 z
    • 描述出Java集合框架中集合的接口关系
      . T( {! \* d4 I5 q( n

    Collection—-Set和List

    Set—-HashSet和SortedSet

    List—-ArrayList和LinkedList

    Map—-HashMap、SortedMap和TreeMap

    0 s9 A  P5 e& X( a" P
    • 代码示例:Collection接口的使用,包括如何定义、初始化、赋值、取值、修改值除值
      0 x/ n3 O) Q( ~9 ?5 K( l1 \
      Collection col = new ArrayList();

      9 d$ k  T' L* ]# Q: f

    String oldValue = “abcd”;

    String newValue = “1234″;

    //增加

    col.add(oldValue);

    Iterator it = col.iterator();

    while(it.hasNext()){

    //取值

    String str = (String)it.next();

    if(str.equals(oldValue)){

    //删除

    col.remove(oldValue);

    //修改

    col.add(newValue);

    }

    }


    0 Z/ G# H* U0 t7 Z/ \- z, g8 p" ?
    • 代码示例:List接口的使用,包括如何定义、初始化、赋值、取值、修改值、删值" u! Q2 y* j5 O" L+ _

    List col = new ArrayList();

    String oldValue = “abcd”;

    String newValue = “1234″;

    col.add(oldValue);

    Iterator it = col.iterator();

    while(it.hasNext()){

    String str = (String)it.next();

    if(str.equals(oldValue)){

    col.remove(oldValue);

    col.add(newValue);

    }

    }

    1 F8 n, N9 y+ n* x7 s
    • 代码示例:Set接口的使用,包括如何定义、初始化、赋值、取值、修改值、删值
      + w. N( ^! n5 x9 r' z

    Set col = new HashSet();

    String oldValue = “abcd”;

    String newValue = “1234″;

    col.add(oldValue);

    Iterator it = col.iterator();

    while(it.hasNext( )){

    String str = (String)it.next();

    if(str.equals(oldValue)){

    col.remove(oldValue);

    col.add(newValue);

    }

    }


      s# P5 H' P* c2 f# L
    • 代码示例:Map接口的使用,包括如何定义、初始化、赋值、取值、修改值、删" u; r6 K9 s5 h! B7 z' |  [
      Map map = new HashMap();
      ! v  Y6 b# p9 z% y- g% G4 _+ C- i& P

    String oldValue = “abcd”;

    String newValue = “1234″;

    //增加

    map.put(“1″,oldValue);

    Set set = map.keySet( );

    Iterator it = set.iterator( );

    while(it.hasNext( )){

    String key = (String)it.next( );

    //取值

    String value = map.get(key);

    }

    //修改

    map.put(“1″,newValue);

    //删除

    map.remove(“1″);

    }


    ) Q6 H: a* B( t( M
    • 描述List接口、Set接口和Map接口的特点. p: J% Y( Q8 l! F6 e& q7 r

    List接口中的对象按一定顺序排列,允许重复

    Set接口中的对象没有顺序,但是不允许重复

    Map接口中的对象是key、value的映射关系,key不允许重复

    ! H( |$ Q# n7 w2 O+ E
    • 如何给集合排序?
      3 x0 M, d% [2 [2 G

    实现comparable接口

    " U3 H4 y6 ~0 F$ d5 O5 m
    回复

    使用道具 举报

    12
    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表