TA的每日心情 | 衰 2021-2-2 11:21 |
|---|
签到天数: 36 天 [LV.5]常住居民I
|
1. while
% l" k3 p& C# O7 X4 z$ M While 循环控制
q' V2 T3 F& y. {3 B. k
r/ a% @$ Y' W) Q! r Scanner console = new Scanner(System.in);/ e7 R* }9 t+ T: z& l
while(布尔表达式){
; | Y- T2 O/ @1 u6 ?# \# [' K qty = console.nextInt();/ E2 t* ], z7 s
if(qty>0 && qty<=5){ //五个以内
- Q9 Q5 A( L0 S% p D break; //打断, 打断当前循环
1 @! R0 y+ V% R8 V6 g/ c# V }
1 P7 N5 I9 J# \% O1 i }$ y+ }* t: Y* O3 Y% _ e
7 l9 N( z* s( n, p( T2. for 循环(主要用于几次的循环)
2 f v0 k$ m" }5 H' _( A 循环控制
4 Q, l4 k$ r5 A4 t3 I4 h for(初始化表达式;布尔表达式; 递增表达式){
" d2 s6 l$ F# G* Q //循环体
# S2 T$ S9 q( x5 O7 ]- J }2 T" {, ?) E7 j5 l+ h" L5 W
for(;;){9 I8 [5 W8 a1 w
}9 [6 d) A m! x3 x8 M% U' @8 O
for(int a=1, b=3;;){
# t7 @9 }5 h6 t8 D! A }
4 ]9 E H8 b* ?5 `6 b
" z7 L2 p# _+ f+ k+ r0 ]7 R+ |; f: s8 {; |. x, x3 R/ K7 T% `
Example:
- I0 `$ n8 G4 k( S/ l6 m for (int i = 0; i < array.length; i++){ d2 z3 ]: ^7 G0 L0 U( o/ ]
System.out.println(i);/ ~( R- v. f' D0 H
}
. N9 {5 i/ ?6 l; H+ h5 A6 E h% H
* n0 e& c' e+ _1 b- _ T* N+ @3. do ... while
- x: `+ S* C, p# n do ... while() 循环控制/ T: `) [% z: d* u5 u
do{1 \2 h' h9 t6 {2 G- \+ @0 [. Y: j; r
//循环体
& x |8 q) U9 R3 G; D }while(布尔表达式);
& h) z4 y( {/ w3 n; H! P6 U Example:
& ~% P! d: ^: s. i) k- C: f$ f do{
% L& E4 ], @8 Z7 E System.out.print("输入押注数量:");$ R& y' J5 O' f! k2 i4 b( G
bet = console.nextInt();
1 G# r/ E9 ]) V) D1 p1 f! R }while(bet <= 0 || bet > balance); //否定条件
+ X$ Q. `7 ~: }$ ?, d
5 k/ J# ~) F$ U' {4. java Array, G W; {, Q. r' i+ W* X- l$ K
1) 数组变量的声明
- h }; Z) T M+ [6 V int[] ary; 声明了数组变量 ary, 数组变量是代词,4 w a2 o; `0 S) W3 H* B5 G
int ary[]; 为了与C语法兼容的写法, 不建议写法,+ }- {& u/ ^2 m9 V5 ]
, L2 }6 g) j+ h7 i: L1 {* y 2) 数组对象动态初始化
' H! v8 r8 U4 j' | ~" V- a4 o ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
8 D4 C g8 a- g 指代了具体事务.0 {6 {2 \1 N! J$ E# F" s8 n, [
数组元素是自动初始化的, 自动初始化为"零"值.
. D- ^# @" N; i$ S Q0 K1 g "零"值: 0, 0.0, \u0000, false, null
6 y5 ~' L8 M0 x2 w; ?1 a1 _ ary = new int[]{1,2,3}; 直接给出元素的初始化
$ [9 z- I' z7 r 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化: x8 _! K' i8 B7 F
* 不能用于赋值语句
2 L5 M/ G: ~/ z/ S* | int[] ary = {1,2,3};
& |) w& R6 `& |7 }6 v/ y8 u ary = {3,4,5,6};//编译错误. w( d4 }( E4 S: I, G
: ~% o+ g; ?3 S& N; J( G Java关键字: if, public, class, else, while
/ y3 p* d0 d9 v5 ~0 R: v* g 特殊关键字: goto, const
! O9 ^! I ^9 Y# R9 h" ^& C, Q java中 true, false, null 不是关键字, 是字面量!
+ B3 l+ J& C) g4 A, l T9 a. C. ?+ {0 K2 y1 g
4) 数组变量, 数组对象, 数组元素
5 h0 h5 t9 m$ A( I: h7 i 如: int[] ary = {1,2,3};( z7 o7 F E5 w" A
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组- h8 Q2 [- k4 R, Z& b
{1,2,3} 数组对象
1 E& W5 a6 ]2 h& ?# M @7 k 1,2,3 是数组元素, D9 B! U. b" @6 |' t# z
2 n( L5 S* V0 {; d7 o4 K2 G" j
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
0 O' D! w8 |/ [$ u7 N% j A 使用[下标] 访问数组元素
- ^/ l e3 z( O' N0 v3 u B 越界访问(小于0/大于等于n), 都会发生运行异常! C6 Q3 }4 ~. k* L! H
C 使用.length 属性可以获取数组对象长度
% y9 {0 |1 r" D7 @
( J" w( `8 K5 O: _5 数组的复制与动态扩展算法
2 n) i9 G* ]2 r0 r 1) 数组对象的复制! e' M/ I' R( s- _& h
, V& d9 r: e( x4 K q
2) 数组的扩展问题
% {$ D, l0 t5 u0 _! {" | 1 Java数组对象的大小是固定的, 数组对象是不能扩展的: ^# B6 N3 I$ u$ Z
2 利用数组复制到方法可以变通的实现数组扩展
3 K/ C2 y& L* M# x2 ^. j7 M; t 3 System.arraycopy() 可以复制数组
" \9 H2 v/ C* e9 v' O6 A" [ 4 Arrays.copyOf() 可以简便的创建数组副本$ o' c/ j4 W3 T- @* @ T
5 创建数组副本的同时将数组长度增加就变通的实现了
$ x" [( M: ^4 M 数组的扩展1 H, [0 h6 N* `1 i* {
) c9 y; |) U$ L$ v 案例1 : 统计一个字符在字符串中的所有位置.3 i$ f: Z1 ^; [! r
字符串: 统计一个字符在字符串中的所有位置
1 g; ~; T# i. c; p+ T 字符: '字'3 z, _) ^# P. v3 e! ]/ Z5 z( G3 Q* I
返回: {4,7}7 S: t) b# E7 g8 e
$ K7 o) q( c; {
6) 数组的迭代: 将每个数组元素重复的处理一遍. x2 c/ s4 \. q, S3 G
for(int i=0; i<ary1.length; i++){
c% C- [! O/ p+ a L% N8 n System.out.print(ary1[i] + " ");1 T8 l& s: D3 m/ n
}- a0 D% n( H" w; Z) r& F7 v+ t
. l. e" p$ T) h
|
|