Java学习(从关键字--常见运算符)

目录

基本概念

关键字

注释

标识符

组成规则

注意事项

常量

常量分类

变量

变量三要素

数据类型

注意事项

数据类型转换

变量与变量,常量与常量相加问题

Java中的常见运算符

算数运算符

赋值运算符

关系运算符

逻辑运算符

位运算符

三元运算符



基本概念

关键字

被Java语言赋予特定意义的单词。

经过一周学习所接触与了解的关键字:byte short int long float double boolean char class array interface if switch case for new final  public

Java中的所有关键字:

Java中的关键字
abstractdoubleintsuper
assertelseinterfaceswitch
booleanenumlongsynchronized
breakextendsnativethis
bytefinalnewthrow
casefinallypackagethrows
catchfloatprivatetry
charforprotectedvoid
classgotopublicvolatile
constifreturnwhile
continueimplementsshort 
defaultimportstatic 
doinstanceofstrictfp 

注释

单行注释://

多行注释:/**/

文档注释:/***/

注释的目的:提高代码的阅读性,方便自己也方便别人理解代码。

标识符

给Java中 的类,接口,方法起名字。(尽可能的见名知意)

标识符的规则和注意事项:

组成规则

只能以大小写字母,数字,下划线和美元符号($)组成。

注意事项

1)不能以数字开头;

2)不能使用@ ,#以及空格等特殊字符;

3)不能含有Java关键字;

4)Java严格区分大小写。

以下为Java的命名规则

给类和接口命名时使用大驼峰命名法(一个单词时首字母大写),给变量和方法命名时使用小驼峰命名法(一个单词时单词全部小写)。

给常量名命名一个字母时全部大写,多个字母时,每个字母首字母大写,中间用下划线连接起来。

//给类和接口起名,一个单词时首字母大写

class Demo{}

//多个单词时每个单词首字母大写

class SwitchDemo{}
interface TheFirst{}

//给变量和方法命名,一个单词时全部小写

int str;
//多个单词时,第二个单词开始首字母大写

int theFirstDemo = sc.nextInt();

//给常量命名一个单词时全部大写

int NUM = 25;

//多个单词时,全部大写,中间用下划线连接

float FIRST_NUM = 3.1415f; 

常量

程序执行过程中,其值不发生改变。

常量分类

字面值常量和自定义常量。

字面值常量:整数常量,小数常量(double和float),布尔常量,空常量,字符常量(单引号括起来的字符,只能是单个字符),字符串常量(双引号括起来的字符串)。

变量

程序执行过程中,其值不断发生改变。

变量三要素

        数据类型 变量名 初始化值

数据类型

       基本数据类型(又称内置数据类型)和引用数据类型。

基本数据类型:四类八种 

       四类:整数,浮点,布尔,字符

              整数又分为:byte,short,int,long

 引用数据类型:类 接口 数组

注意事项

       定义long和float类型时需要在变量值后加上L/l和F/f;

数据类型转换

        自动转化和强制转换

自动转换:

        将小数据转换为大数据

        byte short char参与运算时,自动提升为int

强制转换:

        大数据转换为小数据

强转格式: 目标数据类型 变量名 = (目标数据类型)变量值;

//举例,int型转换为short型

int a;
int b;
short c;
(short) c = (short)(a + b);
//(目标数据类型) 变量名 = (目标数据类型)(变量值);

变量与变量,常量与常量相加问题

        变量相加:必须考虑变量数据类型问题(java中的数据类型自动提升)

常量相加:看结果是否在最终接收数据的数据类型范围之内。(主要是byte 取值范围为-128--127)

//举例byte b = 300;

byte b = 300;

/*
    300     00000000 00000000 00000001 00101100  截取对应的byte类型(1个字节)

       截取                             00101100 (补码)
    求出其原码
          正数原反补相同,所以
    byte b = 300;的运算结果为 32+8+4=44

       
*/

Java中的常见运算符

算术运算符  赋值运算符  关系运算符  逻辑运算符  位运算符  三元运算符

算数运算符

++和--:++和--在变量之前:变量先自增或自减1再返回结果

++和--在变量值后:先返回结果,再自增或自减1

赋值运算符

== += = *= /= %=

重点:除=外其余都隐藏了强制类型转换

short s += 5;
//类似于s = s + 5;
//等价于short s = (short)(s + 5);

关系运算符

特点:连接的表达式无论是简单的还是复杂的,最终结果只能是true或false。

逻辑运算符

重点:&和&&的不同。

&:若表达式左边为false,右边的表达式仍然会进行运算。

&&:若表达式的左边为false,不再运行右边表达式。

位运算符于逻辑运算符的区别

位运算符连接的是两个具体的数值--->具体的结果数据

逻辑运算符只能连接表达式--->true/false

int a = 2;
int b = 9;
int c = 5 & 8;//位运算符连接具体的数值

//逻辑运算符连接表达式,表达式的结果只能是true或false
int d = (a<c && b>c) //连接表达式

位运算符

按位与&,按位或 |,按位异或^,按位取反~

按位与&:两个数值进行按位与运算,在其二进制数上按位进行比较,有0对应位则为0,否则为1.

按位或 |:同上在二进制数上按位进行比较,有1对应位则为1,否则为0.

按位异或^: 同上个在二进制数上按位进行比较,相同时为0,不同时为1.

按位异或特点:一个数据被另一个数据异或两次,结果说是它本身。

按位取反~:一个数值,在其二进制上按位取反(0变1,1变0)

计算机存储正整数是存储其数值的原码,存储负数是存储其补码.

负数取反:

1)先将负数化为二进制数,再求出二进制数的补码(负数计算机存储的为补码)

2)对补码的每一位(包含最高符号位)按位取反,取反之后的二进制数对应的十进制为正数;

3)得到最终结果的补码即为原码(因为正数的原反补相同)

4)计算出最终的结果

//举例
//按位与&
    9 & 15
        9     1001
        15    1111
      结果    1001
             8+0+0+1=9

//按位或 |
    13 | 3
        13    1001
         3    0011
        结果  1011 
             8+0+2+1=11
//按位异或
    11 ^ 3
         11    1011
          3    0011
        结果   1000
              8+0+0+0=8
//按位取反~
    //对正整数进行取反
       ~7
    7    00000000 00000000 00000000 00000111  原码
 ~       11111111 11111111 11111111 11111000  补码
         11111111 11111111 11111111 11110111  反码
 符号位不变,其余按位取反        
         10000000 00000000 00000000 00001000  原码 
    结果为:-8
    //对负数进行取反
    ~(-5)
    -5   10000000 00000000 00000000 00000101    -5的原码
         11111111 11111111 11111111 11111010        反码
         11111111 11111111 11111111 11111011        补码
---------------------------------------------------------
对补码按位取反(包含符号位)
         00000000 00000000 00000000 00000100    补码(原,反,补都相同)
    结果为:4        

移动符号:

左移<<,右移>>,无符号右移>>>

左移<<:将最高位丢弃,给右边补0.

特点:将<<符号左边的数乘以2的移动次幂即为移动结果

右移>>:符号位为0,左边补0,符号位为1,左边补1 

特点:将>>符号左边的数除以2的移动次幂

无符号右移>>>

特点:无论最高符号位为0还是1,都给左边补0

//举例
//左移<<

int a = 2<<3;      //    2    10   <<3        (000)00000 00000000 00000000 00000010000
结果为:2*2*2*2=16

//右移>>           

int b = 36 >> 2;   //   36     100100   >>2   00000000000 00000000 00000000 001001(00) 
结果为: 36/2/2=9

//无符号右移>>>

int c = 32 >>> 3;  //    32    100000 >>>3    00000000000 00000000 00000000 00100(000)
结果为:4

三元运算符

格式: 数据类型 变量名 =  (判断条件) ? value1 : value2;

判断条件为真时,将value1赋值给变量,否则将value2赋值给变量

嵌套: 

//举例
//三元运算符的嵌套
int a = 8;
int b = 19;
int c = 21;

int max = (a>b)?((a>c)?a:c):((b>c)?b:c);

以上内容仅作为个人学习记录.

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值