Java基础——标识符+常量与变量+类型转换+进制转换+运算符+程序流程结构控制


1.       标识符?

在程序中自定义的名称。由英文字母大小写,数字,下划线 (_)美元符号($)组成。

除以上所列几项之外,标识符中不能含有其他符号,当然也不允许插入空格。在程序中,标识符可用作变量名、方法名、接口名、类名等。标识符内可以包含关键字,但不能与关键字完全一样。

 

Java中的名称规范:

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

 

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

 

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

 

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

 

2.       常量与变量?

1)       Java中常量的分类:

1,整数常量。所有整数

2,小数常量。所有小数

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

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

(一个汉字两个字节,也可以作为字符)

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

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

对于整数java有三种表现形式。

•十进制:0-9,满101.

•八进制:0-7,满81.0开头表示。

•十六进制:0-9 A-F,满161.0x开头表示。

2)       变量

变量的概念?

•内存中的一个存储区域

•该区域有自己的名称(变量名)和类型(数据类型)

•该区域的数据可以在同一类型范围内不断变化

 

为什么要定义变量?

•用来不断的存放同一类型的常量,并可以重复使用

 

什么时候定义变量?

当数据不确定的时候,需要对数据进行存储时。就是定义一个变量来完成存储动作。

 

使用变量注意?

•变量的作用范围(一对{}之间有效)

•初始化值

 

定义变量的格式?

•数据类型变量名 = 初始化值;

理解:变量就如同数学中的未知数。

 

Java中数据类型:

 

3.       类型转换

1)         自动类型提升

byte b = 3;

int x = 4;

x = x + b;//b会自动提升为int类型进行运算。

 

2)         强制类型转换

byte b = 3; /此处正确,3是常量,直接赋给变量

b = b + 4;//报错,b是变量,2为整数类型,b自动提升为整数类型,重新赋给b丢失精度

b = (byte)b+4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b

 

3)         运算时的转换:

byte b1=3,b2=4,b;

b=b1+b2;//报错,虚拟机规定,int short boolean byte char在运算时都会转为int32bit整型

b=3+4;//常量赋值

 

4.       进制的转换?

1)         十进制二进制互转

•十进制转成二进制除以2取余数(从下到上取): 

•二进制转成十进制乘以2的幂数:1011 = 1*2^3+0*2^2+1*2^1+1*2^0 = 11;或者根据"1,2,4,8"直接求出来:8+0+2+1 = 11

 

2)         二进制转成十六进制

四个二进制位就是一个十六进制位,因为1111=15,满十六进一位

 

3)         二进制转成八进制

三个二进制代表一个八进制位

 

4)         十进制八进制互转

5)         十进制十六进制互转

 

6)         负数的二进制表现形式

•对应的正数二进制取反加1;正数的最高位为0,负数取反,所以负数的最高位为1

例如:-6的二进制

一个INT类型的整数在内存中是占4个字节,32bit

 

 

5.       运算符

1)         算数运算符

b=a++等同于b=a=a+1;先赋值给b,然后自增1

b=++a等同于b=a=a+1;先自增然后赋值给b

字符串数据和任何数据使用+都是相连接,最终变成字符串:

System.out.print(”5+5”+5+5)     输出:5+555

2)         转义字符

\n:换行符

\t:制表符,相当于TAB

\r:相当于linux系统中按下回车键,,Windows系统中由 \r\n组成

\b:退格,相当于backspace

\”:双引号

3)         赋值运算符

符号:

= , +=, -=, *=, /=, %=

Short a=3

a=a+3//编译失败,丢失精度,是先做加法运算再进行赋值,两步计算

因为a会被提升为INT类型,运算后的结果还是INT类型,无法赋值给short类型。

a+=3//编译通过,只有一步赋值运算,会做自动转换动作

因为+=运算符在赋值时,自动完成了强转动作。

4)         比较运算符

提示:

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

 

5)         逻辑运算符

true & true = true;

                   true & false = false;

                   false & true = false;

                   false & false = false;

                   & :只要两边的boolean表达式结果,有一个为false。那么结果就是false

                           只有两边都为true,结果为true

                  

                   true | true = true;

                   true | false = true;

                   false | true = 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

 

                   &&&的特点:

                   &:无论左边是truefalse。右边都运算。

                   &&:当左边为false时,右边不运算。

 

                   |:两边都参与运算。

                   ||:当左边为true。右边不运算。

6)         位运算符:

(直接对二进制进行运算,运算速度最快,但是有局限性,2的倍数增减)

<<:乘以2的移动的位数次幂;

>>:除以2的移动位数次幂;

 

>>:原最高位是什么就补什么;

>>>:最高位补0

&:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。

|:两边只要有一个为true,结果为true;只有两边都为false,结果为false。

^:两边相同结果是false,两边不同结果是true。

一个数异或同一个数两次,结果还是那个数。用来加密,然后解密(加密算法)

对两个整数的值进行互换(不借助第三方)

a=5,b=6

a=a^b

b=a^b//b=(a^b)^b=a

a=a^b//a=a^(a^b)=b,=右边的值仍然是初始值a=5,b=6

7)         三元运算符

(条件表达式)?表达式1:表达式2;是if else结构的简写

•如果条件为true,运算后的结果是表达式1

•如果条件为false,运算后的结果是表达式2

好处:简化if else代码

弊端:因为是运算符,所以运算完必须要有一个结果。

8)         运算符优先级

优先级

运算符

1

() [] .

2

! +(正) -(负) ~ ++ --

3

* / %

4

+(加) -(减)

5

<< >> >>>

6

< <= > >= instanceof

7

== !=

8

&(按位与)

9

^

10

|

11

&&

12

||

13

?:

14

= += -= *= /= %= &= |= ^= ~= <<= >>=  >>>=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.       程序流程结构控制

判断结构:

if

if…else …

if…elseif...else…

 

选择结构:

switch(表达式)

{

         case  取值1

         case  取值2

         执行语句;

         break;

         case  取值3

         执行语句;

         break;

         …

         Default:

         执行语句;

         Break;//可以省略

}

Switch特点:

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

2)        case之间与default在定义的时候没有顺序。先执行第一个case,没有匹配的case

default

3)         结束switch语句的两种情况:遇到break,执行到switch语句结束。

4)         如果匹配的case或者default没有对应的break,那么程序会继续向下

执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

 

ifswitch语句很像,具体什么场景下,应用哪个语句呢?

switch如果判断的具体数值不多,而是符合byte short int char这四种类型。

虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

 

其他情况:对区间判断,对结果为boolean类型判断,使用ifif的使用范围更广。

 

if...else...为什么比switch效率低?

1.      switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化

2.      switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选择执行哪一个case的语句块

3.      3.if..else的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载
  一次。
所以在多路分支时用switchif..else if .. else结构要效率高。

 

首先要看一个问题,if 语句适用范围比较广,只要是 boolean 表达式都可以用 if判断;而 switch只能对基本类型进行数值比较。两者的可比性就仅限在两个基本类型比较的范围内。
说到基本类型的数值比较,那当然要有两个数。然后重点来了
——
if
语句每一句都是独立的,看下面的语句:
if (a == 1) ...
else if (a == 2) ...
这样 a 要被读入寄存器两次,1 2分别被读入寄存器一次。于是你是否发现其实 a读两次是有点多余的,在你全部比较完之前只需要一次读入寄存器就行了,其余都是额外开销。但是 if语句必须每次都把里面的两个数从内存拿出来读到寄存器,它不知道你其实比较的是同一个 a
于是 switch case 就出来了,把上面的改成 switch case版本:
switch (a) {
        case 0:
                break;
        case 1:
}

因为特定的规则,他一开始就知道你要比 a,于是 a一次性读取,相比 if节约了很多开销。

 

循环结构:

1)         

While(条件表达式)

{执行语句};

 

2)         

Do

{执行语句}

While(条件表达式);

 

Whiledo while的区别?

while:先判断条件,只有条件满足才执行循环体。

do while: 先执行循环体,在判断条件,条件满足,再继续执行循环体。

                  简单一句话:do while:无论条件是否满足,循环体至少执行一次。

 

3)         

for(初始化表达式;循环条件表达式;循环后的操作表达式)

{

执行语句;

}

for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,

为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,

重复找个过程,直到条件不满足为止。

 

Whilefor区别?

whilefor可以互换,区别在于,用于控制循环的增量定义在for语句中,在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。

 

最简单无限循环格式:

while(true) , for(;;),无限循环存在的原因是并不知道循

环多少次,而是根据某些条件,来控制循环。

 

累加思想:

原理:通过变量记录住每次变化的结果。通过循环的形式。进行累加动作。

 

计数器思想:

通过一个变量记录住数据的状态变化。也是通过循环完成。

break(跳出)continue(继续)

break语句:应用范围:选择结构和循环结构。

continue语句:应用于循环结构。

提示:

a,这两个语句离开应用范围,存在是没有意义的。

b,这个两个语句单独存在下面都不可以有语句,因为执行不到。

c,continue语句是结束本次循环继续下次循环。

d,标号的出现,可以让这两个语句作用于指定的范围

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值