黑马程序员.bobo.DAY.2

女生的网名这么多〃 提交于 2019-12-09 19:37:02

DAY-2

1.标识符

1.1 Java语言基础组成

1.1.1关键字

被计算机语言赋予了特殊的含义的字符

1.1.2标识符

l 在程序中自定义的一些名称

l 由26个字母大小写,数字:0-9符号:_$z组成(下划线和美元号)

l 定义合法标识符规则:

1.数字不可以开头。例如:123bobo

2.不可以使用关键字。例如 static public 

l Java中严格区分大小写

l 注意: 在起名字的时候,为了提高阅读性,要尽量有意义

例如:class Add()

 

Java中的名称规范:

l 包名:多单词组成时所有字母小写。

xxxyyyzzz

l 类名接口名:多单词组成时,所有单词的首字母大写。

XxxYxxZzz

l 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。

xxxYyyZzz

l 常量名:所有字母都大写,多单词组成时每个单词用下划线连接。

XXX_YYY_ZZZ

1.1.3注释

l //单行注释

l /*

多行注释

*/

 

 

2.常量

 2.1常量与变量

l 常量表示不能改变的数值。

l Java中常量的分类:

1.整数常量,所有整数

2.小数常量,所有小数

3.布尔型常量,较为特有,只有两个数值,true flase.

4.字符常量。将一个数字字母或者符号用单引号(‘’)标识。‘4

5.字符串常量。将一个或者多个字符用双引号标识。“adc

6.null常量。只有一个数值就是:null.

l 对于整数:Java有三种表现形式。

十进制:0-9 101

八进制:0-7 80头表示。

十六进制:0-9A-F161。用0x开头表示。 

3.进制的特点

编码表ASCII

010...001--A

011...001--B

 

科学型计算机可以计算二进制

 

规律:进制越大,表现形式越短

 

class VarDemo
{
public static void main(String[] args)
{
System.out.println(60);
System.out.println(0x3c);
}
}



 

4.进制转换(十进制和二进制)

十进制→二进制 6的二进制

原理:对十进制数进行除2预算。

 

二进制→十进制

原理:二进制乘以2的过程。

 

110
0*2(0)+1*2(1)+1*2(2)=    数值*2(0)+数值*2(1)+数值*2(2)
    0 +  2    + 4   =6
0	0	1	1	0	1	0	1 =
128	64  32  16  8   4   2   1 = 53
 
5+4=9
 101
+100
1001=9



5.进制转换(八进制和十六进制)

其它进制转换。

先转换二进制

 

转成16进制 四个二进制位就是一个十六进制位

90
0101-1010
 5    10 A
90=0x5A



 

转成8进制

三个二进制代表1

001-011-010
1    3   2



6.进制转换(负数二进制)

负数的二进制表现形式

6==110

-6:其实就是6的二进制的取反+1

取反:将二进制的1变成0 0变成1

0000-0000 0000-0000 0000-0000 0000-0110
 
 1111-1111  1111-1111 1111-1111 1111-1001
+0000-0000 0000-0000 0000-0000 0000-0001

------------------------------------------
 0000-0000 0000-0000 0000-0000 0000-1010 =-6



 

负数的最高位都是1

 测试

class VarDemo
{
public static void main(String[] args)
{
System.out.println(Integer.toBinaryString(-6));
System.out.println(0x3c);
}
}



7.变量

变量:就是将不确定的数据进行存储。

也就是需要在内存中开辟一个空间

就是通过明确数据类型,变量名称数据来完成

class VarDemo
{
public static void main(String[] args)
{
//定义变量的格式:
//数据类型 变量名 = 初始化值;
//定义一个int类型的变量,取值为4;
int x =4;
System.out.println(x);
x = 10;
System.out.println(x);
//演示其它数据类型。
byte b = 2; //-128-127;
//byte b1 = 128;
short s = 30000;//别超过域 因为有可能报错损失精度
long l = 41;
float f = 2.4f;
double d = 34.56;
char ch = '4';
char ch1 = 'a';
char ch2 = '+';
char ch3 = ' ';
boolean bo = true;
boolean bo1 = false;
/*
什么时候定义变量?
当数据不确定的时候。需要对数据进行存储时。就定义一个变量来完成存储动作。
*/
int a = 5;
a = a + 6;
}
}



8.类型转换

byte b  = 3;
b = b + 2;
System.out.println(b);
 
97 a
98 b
System.out.println(‘a’+1);
98



9.算术运算符

9.1运算符

10.转义字符

//字符串数据和任何数据使用+都是相连接,最终都会变成字符串
//System.out.println("ab"+5+5);
/*
转义字符:通过\来转变后面的字母或者符号的含义。
\n:换行
\b:退格。相当于backpace
\r:按下回车键。
\t:制表符。相当于tab键
*/
System.out.println("hello\nworld");//换行
System.out.println("hello\bworld");// 退格
System.out.println("hello\rworld");//按下回车键。
System.out.println("hello\tworld");//制表符。相当于tab键。



 

 

11.赋值和比较运算符

11.1 赋值运算符

l 符号:

=+=-=*=/=%=

l 示例:

int a,b,c; a=b=c=3;
int a = 3; a+=5;等同运算a=a+5;



l 思考:

short s =3;

s=s+2;编译失败,因为s会被提升会int类型,运算后的结果还是int类型,无法赋值给short类型。

s+=2; 编译通过,因为+=运算符在给s赋值时,自动完成了强转操作

有什么区别?

11.2比较运算符

运算符

运算

范例

结果

==

相等于

4==3

false

!=

不等于

4!=3

true

<

小于

4<3

false

>

大于

4>3

true

<=

小于等于

4<=3

false

=>

大于等于

4>=3

true

instanceof

检查是否类的对象

“hello” instanceof

true

1:比较运算符的结果都是boolean型,也就是要么是true,要么是false

2:比较运算符”==”不能误写成”=”。

 

11.3逻辑运算符

运算符

运算

范例

结果

&

AND()

false&true

false

|

OR()

false|true

true

^

XOR(异或)

true^false

true

!

Not()

true

false

&&

AND(短路)

false&&true

false

||

OR(短路)

false||true

true

//逻辑运算符用于连接boolean类型的表达式。
//x > 3 & x <6 = true & true =true;//并且
/*
 true  & true =true ;
 true  & false = false ;
 false & true = false ;
 false & false = false ;
&:只要两边的boolean表达式结果,有一个为false,那么结果为false,
  只有两边都为true 结果为true;
*/
/*true | true = true;
false | true =true;
true | false = true ;
false | false = false;
|: 两边只要有一个为true,结果为true。
   只有两边都有false,结果为false。
*/
/*^:异或:就是和|有点不一样。当true^ true =false;
true ^ true =false;
true ^ false =true ;
false ^ true = true ;
false ^ false = false;
^:两边都相同结果是false;
  两边不同结果为true;
*/
/*
!true
!!true
*/
int a = 4;
a>3 && a<6;
/*
&和&&的特点
&:无论左边是true是false。右边都运算。
&&:当左边为false时,右边不运算。
|:两边都参与运算。
||:当左边为true。右边不运算。
*/



 

11.4位运算符

运算符

运算

范例

<<

左移

3<<2 =12 → 3*22=12

>>

右移

3>>1 =1 → 3/21=1

>>>

无符号右移

3>>>1=1 → 3/2=1

&

与运算

 

|

或运算

 

^

亦或运算

 

~

反码

 

 

3<<2=12; 3<<1=6; 3<<3=24

3*4(22次方:1 2 4)=12 3*2(2的一次方:1 2)=6 3*8(23次方:1 2 4 8)=24

0000-0000 0000-0000 0000-0000 0000-0011=3

向左位移两位

00-0000 0000-0000 0000-0000 0000-001100=12

 

6>>2 =1; 6>>1 =3;

6/22=1取整 6/21=3;

0000-0000 0000-0000 0000-0000 0000-0110=6

向右位移两位

00-0000-0000 0000-0000 0000-0000 0000-01=1

 

3<<2 → 3*22

3<<3 → 3*23

<<:其实就是乘以2的移动的位数次幂。

>>:就是除以2的移动的位数次幂 取整

>>

|111111-1111 1111-1111 1111-1111  1111-10|10=-6

<<<

001111-1111 1111-1111 1111-1111  1111-10|10

>>:最高位补什么由原有的最高位值而定。

 如果最高为-有一后,用0补空位。

如果最高位1,右移后,用1补空位。

>>>无论最高位是什么,右移后,都用0补空位

 

&

6&3=

0就视为假 1就视为真

110

&011

 010=2

 

|

6|5=7

110

|101

111=7

 

^:

6^5=

 110

&101

  011=3

 

 

????问题:~6 为什么结果是-7

第一步:6换二进制 000...000110 6

第二步:取反

111...111001

然后计算 等于2?不是7

111...111010 

 

7^4

111

^100

011=3

^100

111=7; 7^4^4=7; 7^5^5=7

一个数异或同一个数两次,结果还是那个数

 

练习:1。最有效的方式计算2*8

1000

*0010

 0000

1000

10000=16

000..00010 000 

这个高效

2<<3

2.对两个整数变量的值进行互换(不需要第三方变量)

//通过第三方变量,
// int temp;
// temp =n;
// n=m;
// m=temp;
//不用第三方变量
System.out.println("n="+n+",m="+m);
// 11 = 3 + 8;
// 3 = 11 - 8;
// 8 = 11 - 3;
// n = n + m;// 定义:n=3 m=8 然后n=11 m = 8如果n和m的值非常大,容易超出int 范围。
// m = n - m;// 定义:n = 11 m =8 然后m = 3 n=11
// n = n - m;// 定义:m = 3 n = 11 然后n = 8 m 3
n = n ^ m;
m = n ^ m;//(n^m)^m
n = n ^ m;//(n^m)^n;
System.out.println("n="+n+",m="+m);



 

12.语句(if)

12.1流程控制结构

12.1.1判断结构

if语句

三种格式:

1. 

if(条件表达式)
{
执行语句;
}



2.

if(条件表达式)
{
执行语句;
}
              else
{
执行语句;
}



3.

if(条件表达式)
 {
  执行语句;
 }
 else if (条件表达式)
 {
执行语句;
 }
 .....
 else
 {
   执行语句;
 }



12.1.2选择结构

switch语句

格式:

switch(表达式)
{
case 取值1:
 执行语句;
    break;
case 取值2:
 执行语句;
 break;
....
default:
 执行语句;
 break;
}



 Switch语句特点:

 a.switch 语句选择的类型只有四种:byte short int char.

 b.case之间default没有顺序.先执行第一个case,没有匹配的case再执行default

 c.结束switch语句的两种情况:遇到break,执行到switch语句结束.

 d.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束

 

添加好友

小额赞助

微信
支付宝

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!