黑马程序员——Java基础--常量变量运算符

-----------android培训java培训、java学习型技术博客、期待与您交流!------------


一、常量

()常量概述:在程序执行的过程中其值不可以发生改变

()Java中常量分类:

1.字面值常量

2.自定义常量

(1)字面值常量的分类:

字符串常量:用双引号括起来的内容。例:"hello"

整数常量:所有整数。例:1223

小数常量:所有小数。例:12.3456.78

字符常量:用单引号括起来的内容。例:'a','A'

布尔常量:较为特有,只有truefalse

空常量:null

(2)字面值常量输出的简单实现代码:

class ConstantDemo{

public static void main(String[] args){

//字符串

System.out.println("常量");

System.out.println("constant");

//整数

System.out.println("123");

//小数

System.out.println("1.23");

//字符

System.out.println(" ");

System.out.println("a");

System.out.println("B");

//布尔

System.out.println("true");

System.out.println("false");

}

}

运行结果如下:

 

()Java针对整数常量提供了4种表现形式:

1.二进制

2.八进制

3.十进制

4.十六进制

(1)进制概述

进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

(2)不同进制的数据组成

①二进制:由0,1组成。以0b开头

②八进制:由0,1,…7组成。以0开头

③十进制:由0,1,…9组成。整数默认是十进制的

④十六进制:由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头

(3)进制的转换

x进制转到10进制:结果=系数*基数^权值 之和

系数:数位上的那个值

基数:进制就是那个基数 

权值:就是那个基数上次幂,从右向左,0开始数.

举例:

二进制 0b100

基数为2

结果 =  1*2^2 + 0*2^1 + 0*2^0 

 =  4     +  0   +  0

 =  4

    八进制 0100

基数

结果  = 1*8^2 + 0 + 0 = 64

    十六进制 0x100

基数16

结果  = 1*16^2 + 0 + 0 = 256

10进制转到x进制:除基数(x),直到商为0,余数自下而上反转

③十进制和二进制的快速转换:

8421码:每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。

举例:

1.1010100转成十进制

二进制:1 0 1 0 1 0 0

64 32 16 8 4 2 1

十进制:结果=64*1+32*0+16*1+0*8+4*1+2*0+1*0=84

2.100转成二进制

十进制: 128 64 32 16 8 4 2 1

二进制:  0  1  1  0 0 1 0 0

所以结果为:0110 0100

④二进制和八进制,十六进制如何转换

方式1:以十进制做为桥梁

方式二:通过八进制、十六进制的由来的方式--分组转换

二进制到八进制--3位组合(位数不够,左边补0)

举例:

二进制:001 011 001

八进制:1   3  1 

二进制到十六进制--4位组合(位数不够,左边补0)

二进制:  0101 1001

十六进制:  5   9

(4)不同进制的简单代码实现

class ConstantDemo1{

public static void main(String[] args){

//二进制

System.out.println(0b100);

//八进制

System.out.println(0100);

//十进制

System.out.println(100);

//十六进制

System.out.println(0x100);

}

}

运行结果:

 

()有符号数据表示法

在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1

举例:已知某数X的原码为1100 1110B,试求X的补码和反码

符号位 数值位

原码:1 1 0 0  1 1 1 0

反码:1 0 1 1  0 0 0 1

补码:1 0 1 1  0 0 1 0

二、变量

()变量概述:在程序执行的过程中,在某个范围内其值可以发生改变的量。

()变量定义格式:数据类型 变量名=初始化值;

()数据类型分类

1.基本数据类型

2.引用数据类型

(1)基本数据类型--四类八种 

①整数类型(byte, short, int, long)

整数类型

占用存储空间

表数范围

byte

1字节

-128~127

short

2字节

-2^15~2^15-1

int

4字节

-2^31~2^31-1

long

8字节

-2^63~2^63-1

②浮点类型(float, double)

浮点类型

占用存储空间

表数范围

float

4字节

-3.403E38~3.403E38

double

8字节

-1.798E308~1.798E308

③字符型(char):占用2个字节的空间,范围为:0~65535

④布尔型(boolean):只用truefalse

(2)使用变量注意事项:

①作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。

②初始化值:没有初始化值不能直接使用。

③在一行上建议只定义一个变量,可以定义多个,但是不建议。

④在定义变量的时候,虚拟机默认接收的整数是int类型,如果你想赋值long类型的数,需要在数值后面加 或者 L

⑤在定义变量的时候,虚拟机默认接收的浮点数是double类型,如果你想赋值float类型的数,需要在数值后面加 或者 F

boolean类型不能转换为其他的数据类型。

⑦默认转换:

byte,short,charintlongfloatdouble

byte,short,char相互之间不转换,他们参与运算首先转换为int类型

⑧强制转换:数据类型 变量名=(目标类型)(被转换的数据);

()不同数据类型的变量定义的代码演示

class VarDemo1{

public static void main(String[] args){

//整数

//byte

byte b=100;

//short

short s=1000;

//int

int i=10000;

long l=1000000L;//记得加Ll

System.out.println(b);

System.out.println(s);

System.out.println(i);

System.out.println(l);

//浮点型

//float

float f=123.45f;//记得加Ff

//double

double d=123.45;

System.out.println(f);

System.out.println(d);

 

//char

char c='a';

char c1='';

//注意:字符的个数只能为一个,不能写成'aa'或者'珍珍'

System.out.println(c);

System.out.println(c1);

 

//boolean

boolean bl=true;

boolean bl1=false;

System.out.println(bl);

System.out.println(bl1);

}

}

运行结果:

 

()关于强制转换的代码演示

class VarSumDemo{

public static void main(String[] args){

//定义变量

int a=3;

byte b=4;

int c=a+b;

byte sum=(byte)(a+b);//可行,隐含了可能损失精度

//byte c=a+b;// 错误可能损失精度,ab在运算时,b自动提升为byte

System.out.println("c="+c);

System.out.println("sum="+sum);

}

}

运行结果:

 

三、运算符

()算术运算符

1.常见的算术运算符:+,-,*,/,%,++,--

(1)+的作用:

加法

正数

字符串连接符

(2)++和--的使用规则:

++和--在前面时,先自增,再运算。

++和--在后面时,先运算,后自增。

注意:整数做运算,结果还是整数

(3)基本的算术运算符的代码演示

class OperatorDemo{

public static void main(String[] args){

//基本算术运算符

System.out.println(4+3);

System.out.println(4-3);

System.out.println(4*3);

System.out.println(4/3);

System.out.println(4/3.0);

System.out.println(5%3);   //取的是余数 

}

}

运行结果:

 

(4)自增与自减的代码实现

class OperatorDemo2{

public static void main(String[] args){

int x =3;

int y =4;

int c = x++;

int d = y--;

System.out.println("c="+c);

System.out.println("d="+d);

System.out.println("x="+x);

System.out.println("y="+y);

System.out.println("----------------------");

int i =3;

int j =4;

int m = ++i;

int n = --j;

System.out.println("m="+m);

System.out.println("n="+n);

System.out.println("i="+i);

System.out.println("j="+j);

}

}

运算结果:

 

()赋值运算符

1.常见的赋值运算符:=+=-=/=*=%=

基本的赋值运算符:=

作用:把右边赋值给左边

扩展的赋值运算符:+=-=/=*=%=

作用:左边跟右边做运算,再赋值给左边

注意:扩展的赋值运算符隐含了强制转换。

()关系运算符

1.常见的关系运算符:><==!=<=>=instanceof(检查是否是类的对象)

注意1:关系运算符的结果都是boolean型,也就是要么是true,要么是false

注意2:比较运算符“==”不能误写成“=

()逻辑运算符

概述:逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6。

1. 常见的逻辑运算符:&()|()^(异或)! ()&&(短路)||(短路)

2. &&&区别:

&时,左边无论真假,右边都进行运算

&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算

3. |||的区别:

|时,左边无论真假,右边都进行运算

|时,如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算

4. 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

()位运算符

1. 概述:位运算是直接对二进制进行运算。

运算符

运算

范例

<<

左移

3 << 2 = 12 --> 3*2*2=12

>>

右移

3 >> 1 = 1  --> 3/2=1

>>>

无符号右移

3 >>> 1 = 1 --> 3/2=1

&

与运算

6 & 3 = 2

|

或运算

6 | 3 = 7

^

异或运算

6 ^ 3 = 5

~

反码

~6 = -7

2. 位运算的细节:

<<

空位补0,被移除的高位丢弃;

>>

被移位的二进制最高位是0,右移后,空缺位补0;

最高位是1,最高位补1。

>>>

被移位二进制最高位无论是0或者是1,空缺位都用0补。

&

任何二进制位和0进行&运算,结果是0;

和1进行&运算结果是原值。

|

任何二进制位和0进行 | 运算,结果是原值;

和1进行 | 运算结果是1。

^

任何相同二进制位进行 ^ 运算,结果是0;

不相同二进制位 ^ 运算结果是1。

 

举例:

0000 0011

& 0000 0100

--------------------

0000 0000

 

0000 0011

| 0000 0100

--------------------

0000 0111

 

0000 0011

^   0000 0100

--------------------

0000 0111

记得:

&:有00

|:有11

^:相同为0,不同为1

3. 位运算的简单代码实现:

class OperatorDemoPlace{

public static void main(String[] args){

int x=3;

int y=4;

System.out.println(x&y);

System.out.println(x|y);

System.out.println(x^y);

System.out.println(~x);

}

}

运行结果:

 

4. ^实现两个整数变量的交换

class OperatorDemoPlace1{

public static void main(String[] args){

int a=5;

int b=6;

a=a^b;

b=a^b;

a=a^b;

System.out.println("a="+a);

System.out.println("b="+b);

}

}

运行结果:

 

()三目运算符

格式:(关系表达式)?表达式1:表达式2

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

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

用三目运算符获得两个数中的大数的代码:

class ComepareDemo{

public static void main(String[] args){

int x=30;

int y=20;

int z=(x>y)?x:y;

System.out.println(z);

}

}

运行结果:

 

用三目运算符比较两个数是否相等,并输出结果的代码:

class JudgeDemo{

public static void main(String[] args){

int x=30;

int y=20;

//boolean z=(x==y)?true:false;

String s=(x==y)?"相等":"不相等";

System.out.println(x+""+y+s);

}

}

运行结果:

 

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值