一、变量的概述及格式
1.什么是变量:在程序执行的过程中,在某个范围内其值可以发生改变的量;
2.变量的定义格式: 数据类型 变量名 = 变量值;
3.为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用 ;
使用变量的注意事项:
作用域问题:同一个区域不能使用相同的变量名
初始化值问题: 局部变量在使用之前必须赋值
一条语句可以定义几个变量: int a,b,c...n;
二、数据类型的概述和分类
为什么有数据类型:Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
Java中数据类型的分类
(1)基本数据类型
基本数据类型分类(4类8种)
{--->笔试题(必须记住)
整数型:
byte 占一个字节 -128到127(必须记住)
short 占两个字 -2^15~2^15-1
int 占四个字节 -2^31~2^31-1
long 占八个字节 -2^63~2^63-1(必须记住)
浮点型:
float 占四个字节 -3.403E38~3.403E38 单精度
double 占八个字节-1.798E308~1.798E308 双精度
字符型:
char 占两个字节 0~65535
布尔型:
boolean(boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小)
}
(2)引用数据类型
代码:
class Demo{
public void static main(String args[]}{
byte a=1;
short b=1;
int c=32;
long d=32;
float e=3.1;//3.14L
double f=3.14;
}
}
数据类型转换之隐式转换
案例演示
a:int + int
b:byte + int
Java中的默认转换规则
取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
强制转换问题
int a = 10;
byte b = 20;
b = a + b;
强制转换的格式
b = (byte)(a + b);
强制转换的注意事项:如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同;强制类型装换会损失精度。
面试题之变量相加和常量相加的区别
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值;
byte类型的变量在进行运算的时候,会自动类型提升为int类型;
byte b4 = 3 + 4:3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了 ;
long与float的取值范围谁大谁小
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char -- int -- long -- float -- double
{-->记住
long: 8个字节
float:4个字节
IEEE754
4个字节是32个二进制位
1位是符号位
8位是指数位
00000000 11111111
0到255
1到254
-126到127
23位是尾数位
每个指数位减去127
}
它们底层的存储结构不同。
float表示的数据范围比long的范围要大
long:2^63-1
float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
字符和字符串参与运算
案例演示
System.out.println('a');
System.out.println('a'+1);
通过看结果知道'a'的值是多少,由此引出ASCII码表
{-->必须记住
ASCII码表的概述
记住三个值:
'0' 48
'A' 65
'a' 97
}
案例演示
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
+在有字符串参与中被称为字符串连接符
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
char数据类型
char c = 97; 0到65535
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
答:可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节,所以,Java中的字符可以存储一个中文汉字
算术运算符的基本用法
什么是运算符:就是对常量和变量进行操作的符号。
运算符的分类
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
算数运算符有哪些
+,-,*,/,%,++,--
注意事项:
+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
/获取的是除法操作的商,%获取的是除法操作的余数
%运算符
当左边的绝对值小于右边绝对值时,结果是左边
当左边的绝对值等于右边或是右边的倍数时,结果是0
当左边的绝对值大于右边绝对值时,结果是余数
%运算符结果的符号只和左边有关系,与右边无关
任何一个正整数%2结果不是0就是1可以用来当作切换条件
算术运算符++和–的用法
++,--运算符的作用
自加(++)自减(--)运算
++:自加。对原有的数据进行+1
--:自减。对原有的数据进行-1
注意:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。
算术运算符++和–的练习
案例演示:
请分别计算出a,b,c的值?
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = --a;
b = ++a;
a = c--;
案例演示
请分别计算出x,y的值?
int x = 4;
int y = (x++)+(++x)+(x*10);
面试题-->
byte b = 10;
b++;
b = b + 1;
问哪句会报错,为什么
赋值运算符的基本用法
赋值运算符有哪些
基本的赋值运算符:=(把=右边的数据赋值给左边。)
扩展的赋值运算符:+=,-=,*=,/=,%=
+= 把左边和右边做加法,然后赋值给左边。
赋值运算符的面试题
案例演示
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
short s=1;s = s+1;
short s=1;s+=1;
关系运算符的基本用法及其注意事项
关系运算符有哪些(比较运算符,条件运算符)
==,!=,>,>=,<,<=
注意事项:
无论你的操作是简单还是复杂,结果是boolean类型。
"=="不能写成"="。