黑马程序员——java第二天:基础语法(关键字、标示符、进制转换、变量类型、运算符)

------- android培训java培训、期待与您交流! ---------- 

关键字:关键字中所有字母都为小写

用于定义数据类型的关键字:classinterfacebyteshortintlongfloatdoublecharboolean

用于定义数据类型值的关键字:truefalsenull

用于定义流程控制的关键字:ifelseswitchcasedefaultwhiledoforbreakcontinuereturn

标示符:在程序中自定义一些名称

组成:26英文大小写、0-9$_

规则:1、数字不可开头

             2、不可使用关键字

             3java中严格区分大小写

java中的名称规范:

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

类名接口名:多单词组成是所有单词首字符大写

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

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

常量:不能改变的数值

常量包括:1、整数常量。

                      2、小数常量。

                  3、布尔型常量(truefalse)。

                  4、字符常量(单引号括起来的单个字符)。

                  5、字符串常量(双引号括起来的)。

                  6null常量(只有一个null)。

十进制、二进制、八进制、十六进制:

(基本常识是:八个二进制位代表一个字节)

八进制(0开头的数):是(从右到左)三个二进制位代表一个八进制位。

           如:二进制:010  001  110其中每三个位就是一个八进制位。

十六进制(0x开头):是(从右到左)四个二进制位代表一个十六进制位。

         如:二进制:10  1100  1010 0111其中每四个位就是一个十六进制位。

十进制转二进制:

6的二进制表现形式为0000-0000  0000-0000 0000-0000  0000-0110

二进制转十进制:

方法一:

二进制:110      0*20+1*21+1*22=6

方法二:

十进制转十六进制:

(说明:因为有了上面的二进制转十进制的简单方法-方法二,所以我们可以借助方法二先把十进制转换成二进制,又因为四个二进制位为一个十六进制位,把二进制分为四个数字一组四个一组,再通过上面方法二再把二进制转换成十六进制)

十——>  ——十六

90>0101-1010>1010转为十进制为10在十六进制中为A;0101转为十进制为55A

十进制专八进制:

(同十进制转十六进制,不同的是三个二进制位为一个八进制位)

负数的二进制表现形式:

举个例子:6的二进制位110-6的二进制为“6的二进制取反加一”;那么说是010了其实是错误的。因为1106默认为int型占4byte32bit)是简写,

全写完为32个二进制位:0000-0000  0000-0000  0000-0000 0000-0110

所以取反为:1111-1111  1111-1111  1111-1111 1111-0110

再加一:1111-1111  1111-1111  1111-1111 1111-0111这才是-6的二进制。

(负数的二进制最高位为1,正数的最高位为0

变量:(8bit(位)=1byte(字节)

 

表示范围

变量类型

备注

-27——27-1

Byte

八个二进制位(8bit)代表一个字节的数据(1个八进制位)1字节(1byte)

-215——215-1

Short

十六个二进制位(16bit2个八位2字节(2byte

-231——231-1

Int

32bit4byte

-263——-263-1

Long

64bit8byte

-231——231-1

float

32bit4byte

-263——-263-1

double

64bit8byte

0-65535215*2-1

char

16bit2byte

 

Boolean

Truefalse

书写注意:

例如:float f=2.3f (记得要加f);

           double d=3.4ddouble d=3.4 (默认情况下不加后缀为double类型)

           char c=’w’  (字符型记得要加单引号)

           boolean n=trueboolean n=false

类型转换:(在赋值的时候要注意所赋值的类型变量与赋值的类型变量的表示范围)

例如:byte b=3b=b+2;(此赋值方法错误,因为2默认为int型变量加b后自然有小的类型(byte)向大的类型(int)转换。把一个占4byte的变量赋予占1byte的变量要溢出,有失精度)。要这样强制转换才行:b=byteb+2;

自动转换规则为:有小的类型(byte)向大的类型(int)转换。

如:char类型的变量与int类型的变量相加自动向int类型转换;’a’+1结果为98;想显示字符就要强制转换(char)(’b’+1)结果为’c’

总结:《下面基本类型涉及数据转换(不包括逻辑类型)。》

将这些类型按精度从低到高排列:byteshortcharintlongfloatdouble

《1》      当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。

《2》      当把级别高的变量的值赋给级别低的变量时,必须使用类型转换运算(类型转换运算的结果的精度可能低于原数据的精度)。

《3》      当把一个int型变量赋值给一个byteshort、和char型变量时,不可超出这些变量的取值范围,否则必须进行类型转换运算。

’a’97’b’98’A’65’B’66;以此类推)。字符’1’49’1’+0;);’4’方块。

算术运算符:+-*/%++--+(字符连接符)

例如:int x=4237x=x/1000*1000;x的结果是4000.(因为xint类型变量不是小数,所以当x/1000结果就是4,再*1000就是4000特别提醒:要注意变量的类型

         -1%5-11%-5)为1

b=a++;(先赋值再自加);b=++a;(先自加再赋值);

字符串数据和任何类型数据之间使用 +(字符串连接符)都是相连接,最终结果返回字符串类型。如:”abc”+12接过为”abc12”

转义字符、赋值和比较运算符、逻辑运算符(连接boolean类型的表达式)

转义字符:通过”\”来转变后面字母或符号的涵义。

\n:换行;\b:退格;\r:按下回车键;\t:制表符(相当于tab键);

windows系统中回车符是由两个字符来表示:\r\n

linus系统中的回车符是由一个字符来表示:\n

dos系统中的回车符是由一个字符来表示:\n

\”\””双引号;“\\\\”双反斜线;

char ch=’\n’;代表一个回车符;

 

赋值符:=+=-=*=/=%=

前面说过short s=4s=s+5;不成立;下面说一下如果这样:s+=5;就可以成立(因为像这样的一次运算符把左右两边和赋给左边,会做一个自动转换的动作)。

比较运算符:==、!=<><=>=instanceof(检查是否是类的对象)(返回结果是truefalse

 

逻辑运算符:

&and与)

|or或)

^xor异或)

!(not非)

&&(短路and

||(短路或)

实例:

False&true

False|true

True^false

!true

False&&true

False||true

返回结果:

False

True

True

false

false

true

逻辑运算符:

逻辑运算符返回的结果也是truefalse

&:只要两边的表达式都是true时,结果才是true

|:只要两边的表达式有一个是true时,结果才是true

^:异或,就是与或有一点不同(当true^true返回为false)。两边相同结果返回false,两边不同结果返回true

:!truefalse;!falsetrue

&&:运算效果和&相同,只是当左边有false时,右边不运算,返回结果false(从左到右只要碰到falsefalse右边的就不运算,返    回false。)

||:运算效果和|相同,只是当左边有true时,右边不运算,返回结果true(从左到右只要碰到truetrue右边的就不运算,返回true。)

说明:|||&|&&;前者提高了效率,但可能存在没有运算的表达式。

位运算:二进制的运算

左移右移:<<左移、>>右移、>>>无符号右移例子:3<<212

                   十进制:3

                   二进制:0000-00000000-0000 0000-0000 0000-0011

左移两位:00(多出两个无效位删去)00-00000000-0000 0000-0000 0000-001100(空出两位自动补0               十进制为12

 6>>21

                   十进制:6

                   二进制:0000-00000000-0000 0000-0000 0000-0110

右移两位:00(空出两位补0;如果把6变成-6的话自动补1(负数最高位为1))0000-00000000-0000 0000-0000 0000-0110(移出两位删去)  十进制为1

结论说明:x左移时左移y位就可以这样计算:x*2y;例如:6>>2=16/22=1(别忘了默认为int型,结果没有小数位)。

                  x右移时右移y位就可以这样计算:x/2y;例如:6<<2=246*22=24

注意:右移时最高位回空出来几位,如果右移的这个数是正数,则空出来的位用0补(正数

的最高位(最高位为符号位)为0),若右移的这个数是负数,则空出来的位用1补(负数的最高位为1);

例子:最快的方法计算2*82*8=2*23=2<<3=16;

 

无符号右移:无符号右移时不管这个数是正数负数空出来的位都用0补。

 

此处运用位运算符来优化进制转换问题,并可计算负数的进制转换问题

(提示:每四个二进制位代表一个十六进制位,每三个二进制位代表一个八进制位

60&1512(取得最后四位为十六进制的C

12>>>43(取倒数第二个四位,为什么要用无符号右移,因为负数的最高位为1,而无符号右移空出的位都补0,以防有无数个有效位出现)

3&153

因为没有有效位了所以就不用再右移了。结果为:60转换为十六进制为3C

整理为:(60&15)>>>4&15得十六进制3C

 

&与运算:

例子:

|或运算:

^异或运算:

注意:一个数异或两次同一个数,结果还是那一个数(加密时可以用到)。如:7^4^4结果还是7.

例子:对两个变量的值互换(不要第三方变量参与)

         intn=3,m=8;

         方法一:

n=n+m; //但是此处有一缺点:n+m的值不得超过int型表示的数据范围。

m=n-m;

n=n-m; 

        方法二:

n=n^m; //此方法比较有技巧性

m=n^m;

n=n^m;

         方法三就是用到第三方变量,此处就不写了。

~反码:取反

在二进制中,原为1的变为0,原为0的变为1;

 ------- android培训java培训、期待与您交流! ----------

详细请查看:http://edu.csdn.net 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值