TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
1. while
3 k7 I, d* d2 T While 循环控制* ^3 W/ W/ f+ K2 I, z: Y
# M1 B( B# n* g4 k: X, k
Scanner console = new Scanner(System.in);. d" V ~' t9 v, N+ K, R
while(布尔表达式){- @1 C( o' H4 P3 ^( h7 s9 n6 Z
qty = console.nextInt();2 J! u% \( c5 \ Y( ^# G f: B
if(qty>0 && qty<=5){ //五个以内$ S5 E* t5 V& b# J
break; //打断, 打断当前循环
. Q6 N) i( i8 `" f5 {7 s7 J }
7 [3 C5 T) [" G' I5 b! a }
9 p; H7 ?- _% m% o; R _) i
+ U) ^9 y+ L E: k( O8 ?/ n) o2. for 循环(主要用于几次的循环)0 }0 n+ q! _1 W9 @; j
循环控制
) u) w: U) w$ c/ ?- g8 ~ for(初始化表达式;布尔表达式; 递增表达式){7 W9 _% Y& R5 C Q
//循环体/ T7 k" F7 N, w& B
}
/ f6 N" ]. K' ~; u+ ~5 r8 k for(;;){
7 D9 m) o7 _1 s- }% ^3 L+ \1 w }
# W1 o% A6 d/ l% n: b, l* Q for(int a=1, b=3;;){$ U' U' _9 m3 W" |
}
6 S/ v% b: }6 Q O) G* h3 M
& F& P3 P8 ^, I' Y* n! _, S0 j) c9 O+ e5 f' k7 t
Example:6 [/ N0 _7 K5 A5 u) o: m2 n6 P1 Z6 c
for (int i = 0; i < array.length; i++){0 B3 i, ?2 V b% o
System.out.println(i);
3 g! s- v8 O; r. V2 T T' n( \ }
8 N* t. n$ d6 `! y$ \0 A- ?4 A. M
, i# p( O/ g& |) {0 Z3. do ... while# b7 A, P3 a+ t. e6 W
do ... while() 循环控制
6 t2 Z0 e2 c9 H r% r do{! F& l- ?9 P3 _! y
//循环体
0 P; I1 |1 y* W: I3 z/ x& H }while(布尔表达式);
+ M5 z" H' V# M z6 V9 u) @' w Example:
6 ~) f j' F* m1 @$ Z5 `! i, T do{
1 ^8 U1 }9 y( a' s# f# a: X System.out.print("输入押注数量:"); t1 V# B0 N, [" C' z
bet = console.nextInt(); e% t7 X) p P+ J; O$ \7 w
}while(bet <= 0 || bet > balance); //否定条件2 Z1 h, v3 c0 n; h* |
8 \ p- E: a8 o6 C6 H
4. java Array4 w, F4 K1 I6 X) m s b0 M
1) 数组变量的声明
) Q! V# @- h6 F2 F int[] ary; 声明了数组变量 ary, 数组变量是代词,
2 j# e8 w' f- A c% {& r int ary[]; 为了与C语法兼容的写法, 不建议写法,
0 J) R4 S- [# B* D& S4 x: c; q4 @$ h0 f8 z4 D T6 o3 z+ Q: B2 I5 m; P
2) 数组对象动态初始化: W. L' }% u8 r8 U' M# v
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词) n# h& T/ h. y3 a# Z! {' m
指代了具体事务.
# R/ J8 \2 T7 U+ l7 v! Y 数组元素是自动初始化的, 自动初始化为"零"值.* y& T! \! d. t& A- h
"零"值: 0, 0.0, \u0000, false, null
, \ G% p1 {9 M2 ]0 P6 v5 [ ary = new int[]{1,2,3}; 直接给出元素的初始化. ~" ]% F" ?, K4 S8 _
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化8 a; E0 o% R3 \
* 不能用于赋值语句
! {( z# H4 [4 U int[] ary = {1,2,3};) N2 b' n$ @2 H" I) N* \& M
ary = {3,4,5,6};//编译错误
) L+ u v4 T' n8 d+ ]! o- m& y( a8 e9 A7 f; u
Java关键字: if, public, class, else, while
& {! e! Q+ S9 S7 F( z* f 特殊关键字: goto, const) v$ \5 h4 Z% {# a! d' y
java中 true, false, null 不是关键字, 是字面量!/ K# M6 [/ `2 ^8 M4 N) f
) h! H* X; o' m" Q: i+ q 4) 数组变量, 数组对象, 数组元素 # h9 w" C% U2 }2 g4 q6 d% y
如: int[] ary = {1,2,3};
C, K6 f: ~, H1 H( z h! ` ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
. T; M X" y& x& ?- p {1,2,3} 数组对象; O$ | i5 N+ F0 L( c `# X
1,2,3 是数组元素
/ `' ^4 v# ^) D. ~9 i3 g1 @- n' s+ V
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 2 H% Q7 F, ^& A7 }
A 使用[下标] 访问数组元素' p; ^/ J+ p8 E% C4 v/ \
B 越界访问(小于0/大于等于n), 都会发生运行异常1 ^* R' X, C, v( b* a
C 使用.length 属性可以获取数组对象长度
# ^- d g S/ H" ~: A/ q u
9 A# a- e9 ~- j V. s! H# Q5 数组的复制与动态扩展算法
5 e( }: d2 q6 l2 K3 Z8 f4 S 1) 数组对象的复制! M: X/ H K, s/ P
; S/ x3 o) g. H8 ~
2) 数组的扩展问题
- n+ }) R" A( O8 P$ h, M 1 Java数组对象的大小是固定的, 数组对象是不能扩展的, J5 Z- G3 b* j
2 利用数组复制到方法可以变通的实现数组扩展9 h6 W9 q4 P5 Q- u
3 System.arraycopy() 可以复制数组
1 E( E `) w, t5 z 4 Arrays.copyOf() 可以简便的创建数组副本
F( h" J" E5 a- W. f 5 创建数组副本的同时将数组长度增加就变通的实现了
) a6 F) Y) Y3 A Y8 N0 L# O8 o- D 数组的扩展6 } L, D' |' O
" E u) {8 n- O& X1 W( x
案例1 : 统计一个字符在字符串中的所有位置.% O+ F3 U. M- ~0 a) W0 G5 K
字符串: 统计一个字符在字符串中的所有位置 d7 b' `- h3 m* e
字符: '字'
9 ?" Z" g+ I1 ]' e$ X 返回: {4,7}
: }2 `/ p. [, J' Q ~# u8 H% L" J
% l4 u* } T) u6) 数组的迭代: 将每个数组元素重复的处理一遍.
6 C3 G a1 K8 J- V0 v for(int i=0; i<ary1.length; i++){+ K F3 K, I/ I+ a& v. Z
System.out.print(ary1[i] + " ");
4 @4 T5 s- \8 }. D2 }1 H8 i4 K7 L. T }
4 W8 h/ O5 d: p+ `0 T7 ]: ~0 B4 x$ A) `/ D/ d
|
|