常量、变量与运算符

来源:互联网 发布:心事无人知 原唱 编辑:程序博客网 时间:2024/05/17 03:14
一. 常量与变量
1. 常量
  • 概念:常量表示不能改变的数值。
    Java中常量的分类:
    1.整数常量:所有整数
    2.
    小数常量:所有小数
    3.
    布尔型常量:较为特有,只有两个数值:true 、false
     4.字符常量。将一个数字字母或者符号用单引号( ' ' )标识。
     5.字符串常量:将一个或者多个字符用双引号标识。
             6.null
常量:只有一个数值就是:null.
  • 对于整数,java有三种表现形式:

    十进制:0-9,满10进1.

    八进制:0-7,满8进1.用0开头表示。

    十六进制:0-9, A-F,满16进1.用0x开头表示。

  • 进制转换:

注意:负数的二进制表现形式
对应的正数二进制取反加1

例:-7的二进制表示:

首先7在PC内存中表示形式为:

00000000000000000000000000000111

取反得

11111111111111111111111111111000

加一得:

11111111111111111111111111111001

如果要计算负数的16进制和8进制可先计算负数二进制,然后转化为16进制和8进制。

 2.变量    

  • 变量的概念:

    内存中的一个存储区域

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

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

  • 为什么要定义变量:

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

  • 使用变量注意:

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

    初始化值

  • 定义变量的格式:

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

  • 数据类型

 

注意:整数默认:int小数默认:double

拓展:

占用位数:

主类型 大小

boolean 1位

char 16位

byte 8位

short      16位

int          32 位

long      64位

float      32位

double 64位

通过以下代码课的出各类型的最大值和最小值

 



结果

-2
2147483647
-2147483648
9223372036854775807
-9223372036854775808
3.4028235E38
1.4E-45
1.7976931348623157E308
4.9E-324

(引用自博客http://nannan408.iteye.com/blog/1255315/

  • 强制类型转化

格式:(想要转化的类型)原类型

例:(char)(2)把2(int型)转化为char型

注意:

如果将一个类型强制转化成另一个类型,而又超出了目标类型的范围则结果会截断成完全不同的值(char)300结果为44.

  • 表达式的数据类型自动提升

所有的byte型、short型和char的值将被提升到int型。

如果一个操作数是long型,计算结果就是long型;

如果一个操作数是float型,计算结果就是float型;

如果一个操作数是double型,计算结果就是double型。

  • 常见问题:

(引用自黑马程序员论坛 就业指导-许瑞航老师)

问题一:

错误原因:

由于整数默认类型是int类型,如果数值超过了int类型的范围,那么就会报出如上错误。

即使是赋值给long类型的变量,但是后面的常量已经超过了int类型的范围,同样会报错。

解决方法:

在数值后面加上一个"l",就可以让编译器知道后面的常量是long类型的。

问题二:

错误原因:

由于小数默认是double(8byte)类型,赋值给float(4byte)类型的变量,当然可能会损失精度。

解决方法:

在数值后面加上一个"f",就可以让编译器知道后面的常量是float类型的。

 

问题三:

错误原因:

由于变量y是未初始化的,所以不能直接操作。

解决方法:

一定要为变量y先赋值,再打印输出。

问题四:

错误原因:

由于变量z的作用范围是在一对{}之间有效,超出这个范围就失效了。所以,找不到z这个符号。

解决方法:

将大括号去掉,或者在大括号里面打印变量z。

二. 运算符
1.  算术运算符

2.赋值运算符

符号:= , +=, -=, *=, /=, %=

注意:

1. +=, -=, *=, /=, %=均为一个符号

2.+=用法

short s = 3;

s=s+2;//错误2为int型相加还是int型

s+=2;//正确,运算有自动转化为s的类型

3.比较运算符

注意:

运算之后为boolean型

例:1<3 结果为ture

4.逻辑运算符

注意:

&和&&区别:

&:无论左边是ture或false右边都会运算。

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

&可以是两个相等同类型的数相与。

&&只能是boolean类型的两数相与。

(||和|也是一样)

5.位运算符

注意:

取反~:~6为0000….0110取反得1111…1001

因为为int型首位为1则为负数,负数二进制转化为十进制方法为减一(1111…1000)后取反(0000…0111)结果为-7

技巧:不另外定义变量交换m,n的值

方法1:n=n+m;m=n-m;n=n-m

方法2:n=n^m;m=n^m;n=n^m 

6.三元运算符

(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后是结果表达式2; 
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数



0 0
原创粉丝点击