我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > java基础部分day02
总共48087条微博

动态微博

查看: 3456|回复: 8

java基础部分day02

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

跳转到指定楼层
楼主
发表于 2014-03-03 17:25:04 |只看该作者 |倒序浏览
1. java 变量# V' S4 K* F+ e. z% b9 I% P
1) 变量就是自然语言中的代词: E/ I5 G: w) T/ `% p  H9 @! f
   Person he; int age = 15;
9 d' e( Z: q5 s   //age= 00000000 00000000 00000000 00001111
: T' J& m# @2 Z* o# ?   System.out.println(age);//152 |* G7 X- O% ?8 U' i
2) Java 中的变量, Java是强类型语言,0 f8 a5 j* R! F2 V
   A 变量必须声明,并且初始化以后使用 int i=0;
; A. T- t) f2 W: s( R3 X; s# O8 s# d   B 变量必须有明确的类型9 R- Q/ \2 T6 i7 Z) C
   C 变量不能重复定义  r* `/ ]/ P. K; H- F; V8 d
3) 变量的作用域
6 Y4 |/ q2 j7 o: a  ^9 B3 y   a 在声明的地方开始,到块结束为止
- Q6 Q: J. j6 O. C" i   b 离开变量的作用域结束,变量将回收。
  [4 d6 ~5 @% {- ]3 s* [" P% k9 N
3 f( d$ W" R- Q2. 进制转换基础
; u( M( ?# m9 O 1) 十进制
1 |( a' f5 Y4 K$ f0 |! _: Q    逢10进1
/ @  v" V" r* ?$ U" _2 r0 Q/ V    基数: 10; C% m, t+ M) F) h! V
    权: 10^n,  10000 1000 100 10 1! E2 z) S0 K* E
    23678(10) = 2*10000+3*1000+6*100+7*10+8*1 + W0 P2 t# d8 u8 ~
              = 2*10^4 + 3*10^3 + 6*10^2 + 7*10^1 + 8*10^0
& B; i* r, p- N' w+ C( E) ?/ |& {# H              = 236795 I' w5 M% S& t, y3 d
% E1 e  T# x2 l) w2 G+ _5 a5 h
2) 二进制
  b, c  ]: T0 S. D    逢2进1$ ]/ S6 ^- H1 v; K" {) |+ D0 w
    基数: 2
) y1 H. H8 H5 \8 e  S" r    权: 2^n,  128 64 32 16 8 4 2 1 * d/ m; ]* f6 d( u- w2 Q1 e4 Y3 D
    01000001(2) = 1*64 + 1*1# r# g2 U/ C( ?+ S6 I+ ^# G+ t/ s
                = 65(10)9 ?! [: {8 f9 E( b/ Z( R: r
3) 补码基础" V" N8 b* \4 x7 h4 V
      -128 10000000  11111111 11111111 11111111 10000000
. H, a0 L6 y0 r8 l3 m0 h8 m$ U10  2进制   ...       ...
9 @" ^1 l& q  a; s- V" D" S     8421  11110111  11111111 11111111 11111111 11110111% Q0 C' s0 D9 _9 F3 j* r0 K% w6 F
-8   1000  11111000  11111111 11111111 11111111 11111000 7 x3 A$ y5 T3 E" A6 I
-7   1001  11111001  11111111 11111111 11111111 11111001/ I+ }. |6 s0 x, A0 P
-6   1010  11111010  11111111 11111111 11111111 11111010
% M) X2 e. r+ K1 J% }-5   1011  11111011  11111111 11111111 11111111 11111011
8 F5 i; G( O. l8 i6 W' ^% e-4   1100  11111100  11111111 11111111 11111111 111111008 ~3 t0 d; d4 g# A, |: Z1 X5 y7 [5 M
-3   1101  11111101  11111111 11111111 11111111 11111101
4 o9 y8 W* T5 x" T8 K$ {" T, B* g, W-2   1110  11111110  11111111 11111111 11111111 111111108 ?5 m% V; N7 Y! _2 x
-1   1111  11111111  11111111 11111111 11111111 111111110 t8 H" \$ ^: G4 Z4 \  D- E
0   0000  00000000  00000000 00000000 00000000 00000000
1 f" ?: ?6 i3 r8 d 1   0001  00000001  00000000 00000000 00000000 00000001
5 T. s+ ]8 r* M, P& ^: O- s 2   0010  00000010  00000000 00000000 00000000 00000010
- T. O4 U2 {$ d8 [+ _1 o 3   0011  00000011  00000000 00000000 00000000 00000011
* ^  l2 N% B/ L- `8 R4 d3 f5 C. y6 t 4   0100  00000100  00000000 00000000 00000000 00000100% ~3 i9 z1 ^1 g4 B# R& i+ `
5   0101  00000101  00000000 00000000 00000000 00000101
0 m; U! y5 p$ J 6   0110  00000110  00000000 00000000 00000000 00000110
9 O" B% N) c9 F( f& Q 7   0111  00000111  00000000 00000000 00000000 00000111 - B/ ]* H! L3 c+ S' A1 G8 Q
           00001000  00000000 00000000 00000000 00001000/ r. `- X/ O$ R* a) }8 j
           ....      .... C% O1 [  C# D/ C1 S  R
       127 01111111  00000000 00000000 00000000 01111111
; p( f, o6 D, X- z$ v  补码运算:
' @6 p5 e$ N* L  -1  11110 q/ G4 `* t$ A) h; n" x
  -1  11116 e# I# v. b1 r+ a3 n
* + W" k7 n3 S" w6 F) u2 {
----------
+ }, j/ _$ H; |9 k# D: L      1111
+ s% j5 E- P* q( D8 F     1111' e' I% g1 g. D# v  t
    1111! E3 V  @3 V8 ?& K
   1111+ p. ^( T8 a/ A0 @& {: ^
   10101012 V* J. d- Q- M* [& ]) r' J0 c
-----------
. {2 l# a* k6 Q0 l      0001
4 C0 r4 V/ j/ X2 o( T2 z6 `! s- R7 l! h, ~3 w
  4) A Java 内部只有二进制补码
+ k* w$ x" }) H/ `/ R     B Java 内部采用补码运算, 自动发送上溢出和下溢出
3 `! G: m% u* o. F' m     C Java内部没有10进制! 但是Java尽量按照人类习惯输入输出
# [7 P6 e( K! I6 s2 o     D 补码的负数 最高位是 1, 也称作符号位
/ b9 V" S# q- _* p" j# _  5) 16进制, 是2进制的简写, 方便专业人员书写2进制数据
1 o0 y7 W0 r( S) V5 Z, o% l" ~    16进制
; P7 W0 P% [: V. V/ N$ o    逢16进1
9 A, G: R( f4 Y$ X* O8 v    基数: 16
7 w- t; ~& A$ l% g9 W1 ^    权: 16^n,  256 16 1 % c, P1 p- w; A0 G: O2 a
    16进制数字: 0 1 2 3 4 5 6 7 8 9 a  b  c  d  e  f; @: x) }# u1 [5 Z) L2 a
               0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15+ j; h8 c& d# A
        + U3 S4 Q7 k- d  n, D$ t
    41(16) = 4*16 + 1*1
7 x4 Q- p$ o' T- ]% l2 g           = 65(10)
- v% R: I! l* n" D' A5 i           = 0100 0001(2)
8 U' d1 Y4 m9 \9 V& ?2 |             8421 8421- h# f+ U  x3 \+ k0 O3 ^
             4    1   (16)
' z& N0 X2 _( M; e+ T+ j: x4 i- E3 _) x# T; s" J1 _
    128 64 32 16 8 4 2 1 8 w% V+ T7 |5 ]+ h" y5 {" Y# |
     0   1  0 0  0 0 0 1( X  w# J1 K6 q! Y3 A8 F3 _
    练习:转换以下十进制为二进制 192(10)  137(10)   145(10)   3 F2 v# [2 {" o! N) l- P
    192(10) = 1100 0000 (2)
- q3 O% [5 C+ r              c    0    (16)% l$ x/ c% F; I( y* H1 l. _
    -8(10) = fffffff8(16)4 z1 o  ~, F& H; o
进制总结:: V1 @/ Q5 r" K2 e& e( Q; O0 L' j
    计算机内存只有 二进制补码
" s+ l% j# t9 z8 q& P    默认输出, 按照人习惯输出10机制结果
) h! Z0 a( J7 }6 a, d1 s- @; S: N    16进制是, 二进制的简写, 16进制本质就是2进制& M. G+ q. l0 u7 w
    16进制存在的价值: 方便书写2进制!
4 B' B, C( S( }2 f: {" h" _! `# ]2 G# g/ C* ~
3. Java 数据类型: 分为引用类型和基本数据类型6 l4 B& \& H, J7 z/ Y
1) 基本数据类型: 8种
+ m. Y7 \! ?8 f1 U3 S0 E   byte, short, int, long
- [2 M# s7 g! a; f( e! E- w   float, double
7 k' O  T" m# U/ N) ?   char
9 K; U; n: k) s- Q' \   boolean  I1 X/ T' j- z- R- B: E8 N
2) 整数类型  byte, short, int, long, 都是有符号(补码)整数) B6 `, C. k/ g4 K! v5 x! t
  byte   8位补码     最大值 0x7f  127  最小值 0x80 -1280 b, q0 {! F9 y6 t5 X. X
  short 16位有符号数 0x7fff 32767  0x8000 -32768
) l9 ?- i: U+ v# `2 o3 I  int   32位         0x7fffffff 2G-1 2^31-1 21亿 0x80000000 -2G 0 b; e( {' B$ A6 B
  long  64位 ....
% i9 @! g9 O* _3 z1 K" f. h  整数字面量(直接量) 默认是int类型, 如果不超出范围, 可以给$ R4 J; Z1 s: Y- ^3 f
  小类型直接赋值.6 F: [& [" }' U& h- T0 D! J
  使用整数类型(byte, short, int) 要注意取值范围, 超范围运算
  x2 }' x/ B" ~' A6 b- \$ R  java 底层byte,short 按照32位计算# N* p0 M5 t7 U9 B
$ O4 ^7 N/ ~% Y# r
  long 类型的字面量使用"L","l" 后缀3 n8 B# j% r8 V

7 E7 L2 y! K% k( n5 L: g' e 3) 浮点数, 小数 (不必掌握 浮点数的存储方式)
3 _* P3 a+ y" t- t$ ]2 w! C+ d: u  浮点数原理: 10进制浮点数(科学计数法)原理
2 k7 r5 T- V" P+ O! l, a6 C0 ~* W    2356189. = 2.356189 * 10^6. v7 d2 Q0 Q9 a$ `) \7 H
  概念: 尾数: 2.356189 " w) z/ b$ ?1 I% i
       指数: 67 O! F0 q1 @2 m! d: r. U  C
       基数: 10
0 h6 M( g/ G3 n7 C& m; g8 t  pi = 3.14
; H( C& ^) ~( A       3.1415926535897932384626433) Q8 ^! v) W$ ]1 u# C$ ^
. s9 U) _% q8 E+ Y6 o" e
* p9 h( V( ]- r8 r2 o- Y4 ?! }
  二进制浮点数:
! a% [. G4 T0 w' I6 W; ]2 a% O    101001010101. = 1.01001010101 * 2^1011
: b, c: Q8 k3 H8 J- A  概念: 尾数: 1.01001010101
5 L+ l: Z& r" `       指数: 10117 L+ ?. Q* G$ `9 o* Q# c0 L# v
       基数: 2
  C# {2 }+ p$ m" b5 ?/ v/ X8 V1 s5 o' I
float: 32位 其中: 1位符号位, 8位指数, 23位尾数; o9 `3 d. s0 U* K( v0 B  ^6 P

  p" g% u' _  y: O: t2 u3 F 精度: 23 位* R/ T+ w- ?" A& u- w0 O0 e9 a% U, h
  int max = 01111111 11111111 11111111 11111111$ n" [/ A" s; V9 I- j( p$ E+ f
  float f = 1.111111 11111111 11111111 1 * 2^00011110
& F( M# s! E7 U! C# h& h
& \+ [, R: I6 J' D' I7 S/ p double: 64位 其中: 1位符号位, 11位指数, 52位尾数8 c, u7 a3 i9 K, Y& V
# j  q' }8 t3 t
浮点数的字面量: 默认是double, D d 后缀是double, f F 是float" i6 U! y" @  n; Y- P

; }7 q$ u; w/ s* N0 e& k( d6 u' }) F& p 4) 字符类型 char, 字符是一个16位无符号整数, 是一个二进制数/ k8 }* P/ ?/ m8 S9 |& t
   数值是一个字符的unicode编码值. , M+ R4 h) ~& z5 ]
   unicode 编码: 是全球范围内的编码方法, 编制了英文, 中,日,韩
& _( P) |! b0 d- H9 k   阿拉伯, 希伯来, ..... 8万+ 字符" x& ?5 F% v4 Z5 k# q* J3 U" P
   其中英文部分与ASCII 兼容, 英文字符和数字是连续编码的.9 q" K$ E2 A- E. Z9 W) Q5 p
   ASCII: 0~128
. A" l, {1 M! E4 z; s% O0 v   Java char 的范围 0~65535 不能表示全部unicode 但是可以表示
. y9 i8 q- S2 \: m3 @# \   unicode只能够最常用的部分
9 }- |9 Q  ~+ F+ {" ?
1 b( i, H1 ^7 E9 X$ U# A   *最小值:0, 最大值:65535 = 2^16-1+ I+ u- i8 f& @: Z1 }# N; X
   *字符字面量使用单引号为定界符号:'中' '0'->0  '4'-'0'->4
2 J% r2 G* H, z7 ^- A) @& P* e+ r7 ^     字面量也是整数常量!                         52  48   
" n$ a9 D9 L$ L     特殊字符采用转义字符表示:
4 I, I; z! b3 A1 X7 U% r# z     如: '\n' '\t' '\\' '\b' '\r' - Y* D8 \  X1 ]6 w- P# i1 F. b) b! b
        '\'' '\"'  '\u4e2d'
/ K8 U& k' x5 `3 g+ v
4 s5 }+ u3 N9 W7 t     char c = '\\';5 y' p, ]: A4 `" q6 h3 |

. ~+ U/ Y+ H1 j, D  }% W     'X' - 'A' = N/ T+ o3 c. @+ m) ~/ t
     'x' - 'a' = N( x3 }# ]" H" G' I, P7 }1 H$ N
     X  = 'c' - 'a' + 'A'
+ N' q2 M% n+ I6 [  b1 @1 {$ ~
! Y5 ~" _" o" H1 Q4 @7 w, ^  5) boolean 布尔类型 表达: 真(true)/假(false)
! l; O  i  m8 O) Y, ^4 ]- H   建议使用长变量名定义变量
* |0 M* }' e$ ]. b" S1 u   boolean started = true;# Z- X  v0 J- `+ w+ A3 P
   boolean isMan = true;
9 E6 e8 ?9 Q; _7 M$ C) |   isMan = false;
$ c+ q0 g& q2 A: R( @   boolean used = true;//二手的
6 _1 N% i2 h9 D9 Q0 S; v, G: f3 T- i   if(used){  w0 b- B+ z/ y
            System.out.println("打八折");
# E/ z. @6 C& P0 S. V1 j4 P   }
2 a8 _& m2 b- Y8 v2 J9 X   不建议 定义没有意义的变量
4 ?0 S/ \: A+ U5 k- u+ @% J   boolean u = true;//u = you- v8 S8 ?( h* g) F; X1 Q8 n: Z* e) p
   boolean flag = false;
8 y2 m- F( w% J* X7 K
# F: {1 |7 J' @  \! w, T   if(flag){
  x+ f& u2 u2 c4 v1 P            System.out.println("打八折");
, [, m# X! }8 D/ l   }  
) k! m$ }( c. X$ ~/ F
0 L2 }+ A$ K5 l* k" ]5 l4. 数据类型转换 7 \" V: I' Q9 \9 k6 p) ~
           char ->
9 ~7 \0 _+ g) }8 o, E- P, R   byte -> short -> int -> long -> float -> double
0 a2 K. j- V$ y0 l
0 L& }0 f, M' j+ p9 c5 D% D- a 1) 自动类型转换,正方向,小类型到大类型的转换会自动完成
1 t% Z/ M7 s5 R/ U. N. r& [4 g   符号位会自动扩展, 负数补1, 正数补0, 保证补码数值不变: d/ i" e& \: q) c% U
   注意, 整数到浮点数转换会损失精确度
" r: O0 m' g) P! p   自动类型转换也叫"隐式类型转换", 是自动发生的, 一般不需要处理
9 u$ J0 ^1 Z1 z, e& t6 o! h# q) h/ D  w- \
   int i = -1;
) A4 y0 V) C6 p6 p+ B   long l = i;
0 X) X9 e+ L8 J& Z0 z7 E) {  c
2) 强制类型转换(显示类型转换), 需求明确处理, 是按照反方向,进行
% l  t# X; b( a: v9 Y 的转换, 这种转换会溢出, 或者损失精度. 要注意数据的范围: B7 I- k( R* ]" p# m" C
int i = 128+256;// 00000000 00000000 00000001 10000000
4 Y3 j2 r) w( v5 t4 P3 w byte b = (byte)i;//-1283 X2 V; f+ M  \+ @7 ~; N& |

2 I  D/ |6 [7 Y+ s5 t! E3 T* ? long l=0xf80000000L;2 F1 {; O( U& m6 Z1 s1 i5 O
int c = (int)l;//负数
' D4 Y( B. A  j; r2 u9 c  ?: `  ~
% B! L2 M; l" v l = 8;0 n' q/ t" N) J+ v; a1 o* j! m
int d = (int)l;, i! r/ W! [  M& J  Q5 l
) h& M7 x$ }: {% }4 m) p) K) z
float pi = (float)3.1415926535;//损失精度
  e8 n' Z& T7 b  M, i" Z8 E6 G8 B* Z
( @8 e4 e: y7 _" n char c = '0';
& j( H, U" a4 e  k0 d. _ char x = (char)(c+2);
2 ~* z/ I/ q5 W% O7 n2 |7 i5 G+ ?! e3 V9 y

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

2

主题

0

听众

148

金钱

三袋弟子

该用户从未签到

沙发
发表于 2015-10-15 13:45:08 |只看该作者
看了看  学习学习  哈哈哈哈
回复

使用道具 举报

9

主题

0

听众

183

金钱

四袋长老

该用户从未签到

板凳
发表于 2016-01-06 18:41:07 |只看该作者
学习学习学习学习) u* w  O* Y  V" i: R4 S0 X  ~  A
回复

使用道具 举报

32

主题

2

听众

578

金钱

四袋长老

该用户从未签到

地板
发表于 2016-01-07 17:16:03 |只看该作者
来看看,学习学习只为学习,赞一个
' E( w% C# q7 g8 O1 w# b
回复

使用道具 举报

1

主题

3

听众

341

金钱

四袋长老

该用户从未签到

5#
发表于 2016-03-17 22:02:23 |只看该作者
学习一下。谢谢
回复

使用道具 举报

woniu 实名认证   

2

主题

0

听众

330

金钱

四袋长老

该用户从未签到

6#
发表于 2016-04-12 12:23:42 |只看该作者
这个项目太棒勒!下下来学习下!
回复

使用道具 举报

5

主题

0

听众

316

金钱

四袋长老

该用户从未签到

7#
发表于 2017-08-12 20:48:42 |只看该作者
不错不错不错不错
回复

使用道具 举报

18

主题

0

听众

2680

金钱

七袋长老

该用户从未签到

8#
发表于 2017-08-13 00:06:19 |只看该作者
学习一下谢谢
% ]6 h) ^; d# K5 D) \5 Q9 Z
回复

使用道具 举报

5

主题

0

听众

316

金钱

四袋长老

该用户从未签到

9#
发表于 2017-08-14 08:29:52 |只看该作者
不错不错不错
回复

使用道具 举报

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

   

关闭

站长推荐上一条 /1 下一条

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