1.常量和变量
1.开辟内存空间(JVM)
2.提取数据(.class)
3.cpu调度运行
常量和变量就是在内存中做数据交换的一个过程。
(1)常量
在程序的运行期数据不发生变化的量就是常量。
整数的常量:24小时,365天
小数:重力系数9.8, 圆周率3.14
字符: ‘男’,
布尔数值:true,false
空常量:null。
(2)变量
在程序运行的过程中存储可以变化的数据的量(内存的空)就叫做变量。
2.数据类型
Java的数据类型分为:基本数据类型和引用数据类型。
基本数据类型有8种
字节:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
整数类型
byte 1个字节
short 2个字节
int 4个字节(最常用的整数类型)
long 8个字节
如果我们定义了一个byte类型的变量,约束了类型是整数,这个整数的范围是-128到127
小数类型
float
double
小数的类型的数据的存储方式和整数不一样。
float -3.403*1038 -------3.403*1038
小数类型表示的数据范围要比整数的最大范围大。
字符类型
char 2个字节
需要使用 ’’
布尔类型 2个字节
boolean true false
布尔类型就有2个值
字节:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
整数类型
byte 1个字节
short 2个字节
int 4个字节(最常用的整数类型)
long 8个字节
如果我们定义了一个byte类型的变量,约束了类型是整数,这个整数的范围是-128到127
小数类型
float
double
小数的类型的数据的存储方式和整数不一样。
float -3.403*1038 -------3.403*1038
小数类型表示的数据范围要比整数的最大范围大。
字符类型
char 2个字节
需要使用 ’’
布尔类型 2个字节
boolean true false
布尔类型就有2个值
3.变量的定义
对变量的操作:存储值和取值
语法:数据类型 变量名字 = 初始值;
等号(=):赋值。
变量的定义位置:定义在方法中或者语句块中。
变量的定义必须要有初始值,后续我们会学习到类的属性的概念(不需要初始化)
变量的使用范围:
变量只能在当前的大括号和当前的大括号的子括号内使用。
基本数据类型 | 初始值 |
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
char | ' ' |
boolean | false |
4.数据类型的转换
八种数据类型除了boolean类型以外都能转换。
1.自动转换
变量在做计算的时候可能溢出的情况,那么java语言采用自动类型转换的方式来处理。
小的空间的数据类型和大空间的数据类型的数计算会向大的空间的数据类型去转换。
byte、short、char在做计算的时候会自动的提升数据类型成int
int和其他的数值计算也会溢出,int不会提升而是直接损失精度
0111 1111 1111 1111 1111 1111 1111 1111
1000 0000 00000000 0000 0000 0000 0000
任何的整数类型和long类型做运算都会转换成long类型。
2.强制转换
大空间的数据类型向小空间的数据类型去转换。
语法:(目标数据类型)变量名
Int类型的8 0000000 0000000 0000000 0001000
short类型的8 0000000 0001000
byte类型的8 0001000
5.运算符
1.算数运算符
四则运算
+、-、*、/ %
自增
自减
class Demo9{
public static void main(String[] args){
int a = 10;
int b = 3;
//加法30
int c = a + b;
System.out.println("a+b="+c);
//-10
int d = a - b;
System.out.println("a-b="+d);
//200
int e = a * b;
System.out.println("a*b="+e);
//3,取整
int f = a / b;
System.out.println("a/b="+f);
//取余数 1
int g = a % b;
System.out.println("a%b="+g);
/**
*后++ --
*/
int i = 1;
//把变量的值做加一
i++;
System.out.println("后加加后:"+i);
int i1 = 4;
//把变量的值减一
i1--;
System.out.println("后减减后:"+i1);
/**
*前++ --
*/
int i2 = 1;
//把变量的值做加一
++i2;
System.out.println("前加加后:"+i2);
int i3 = 4;
//把变量的值减一
--i3;
System.out.println("前减减后:"+i3);
///
int i4 = 10;
//当后加加和减减和其他代码在一行的时候先使用加加和减减之前的值, 如果不在同一行,后面的一行就会得到加加或减减后的值
System.out.println("同一行中后加加:"+(i4++));
System.out.println(i4);
//System.out.println("同一行中后加加:"+(i4--));
int i5 = 20;
//前加加和减减就是先做加一或减一再使用变量
//System.out.println("同一行前加加:"+(++i5));
System.out.println("同一行前减减:"+(--i5));
System.out.println(i5);
}
}
2.赋值运算符
=,+=,-=,*=,/=, %=
= 赋值
class Demo10{
public static void main(String[] args){
int a = 10;
//相当于a = a + 5
a += 5;
System.out.println(a);
int b = 20;
//相当于b = b - 10;
b -= 10;
System.out.println(b);
int c = 5;
//相当于c = c*2
c *= 2;
System.out.println(c);
int d = 8;
//相当于d = d/2;
d /= 2;
System.out.println(d);
int e = 10;
//相当于e = e%3;
e %= 3;
System.out.println(e);
}
}
3.比较运算符
==,!=, >, >=, <, <=
== 判断双等号两边是否相等
class Demo11{
public static void main(String[] args){
int a = 20;
int b = 20;
//判断a和b是否相等,如果相等是true,不等是false
//boolean isTrue = (a == b);
System.out.println(a == b);
//boolean isTrue1 = (a != b);
//判断a和b是否相等,如果相等是false,不等是true
System.out.println(a != b);
//如果a大于b就是true
System.out.println(a > b);
//如果a大于等于b是true否则就是false
System.out.println(a >= b);
//如果a小于b就是true
System.out.println(a < b);
//如果a小于等于b是true否则就是false
System.out.println(a <= b);
}
}
4.逻辑运算符
&,|,^, &&, ||,!
&:当多个表达式进行运算的时候,只有所有的表达式计算结果都是true整体的结果才是true
class Demo12{
public static void main(String[] args){
int java = 80;
int sql = 19;
//判断两门考试都大于60分是及格,只要有一个表达式是false那么整体就是false,但是&不管第一个表达式是不是false,所有的表达式会全部执行
//System.out.println((java > 60)&(sql > 60));
//System.out.println((java > 60)&(++sql > 60));
//System.out.println(sql);
//判断两门课程如果有一门课程或者一门以上及格就算你通过
//只要有一个表达式是true那么整体就是true,但是|不管第一个表达式是不是true,所有的表达式会全部执行
//System.out.println((java > 60)|(++sql > 60));
//System.out.println(sql);
//System.out.println((java > 60)&&(++sql > 60));
//System.out.println(sql);
System.out.println((java > 60)||(++sql > 60));
System.out.println(sql);
//把结果取反
System.out.println(!(java>60));
}
}
5.位运算符
<< >> >>> & | ^
<<:将参与运算的二进制数据向左移动,在低位产生的空位用0来做补齐。
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
>>将参与运算的二进制数据向右移动,在高位产生的空位如果高位是0那么就用0来做补齐,如果高位是1就用1来补齐。也就是说右移是带着符号位移动
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
右移3位
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
计算机中所有的二进制运算都是用的补码
原码 反码 补码
正数(3) 0000 0011 0000 0011 0000 0011
负数(-3) 1000 0011 1111 1100 1111 1101
5.位运算符
<< >> >>> & | ^
<<:将参与运算的二进制数据向左移动,在低位产生的空位用0来做补齐。
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
>>将参与运算的二进制数据向右移动,在高位产生的空位如果高位是0那么就用0来做补齐,如果高位是1就用1来补齐。也就是说右移是带着符号位移动
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
右移3位
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
计算机中所有的二进制运算都是用的补码
原码 反码 补码
正数(3) 0000 0011 0000 0011 0000 0011
负数(-3) 1000 0011 1111 1100 1111 1101
0000 0011
+1111 1101
---------------------------
0000 0000
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
>>>:无符号右移,将参与运算的数据向右移动,在高位所产生的空位0补齐
1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
1111 1111 1111 1111 1111 1111 1111 1101
0001 1111 1111 1111 1111 1111 1111 1111