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 满10进1
八进制:0-7 满8进1 用0头表示。
十六进制:0-9,A-F满16进1。用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(2的2次方:1 2 4)=12 3*2(2的一次方:1 2)=6 3*8(2的3次方: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结尾结束
添加好友
小额赞助
微信 |
支付宝 |
|
|
|
|
|
|
|
|
|
|
来源:oschina
链接:https://my.oschina.net/u/2320120/blog/414936