Java基础语法-02-变量和数据类型
计算机内存
内存的作用
内存的作用主要是用来平衡CPU的处理速度和硬盘的读取速度。一块正常的机械硬盘连续读取速度是100M/s。而CPU的处理速度远远超过这个速度。所以如果没有内存的参与,可能会产生硬盘全力读取,CPU却一直空闲的状态。
内存工作原理
1.数据形式
在计算机中其实没有数据的概念,只有0、1。也就是电信号,0表示断电,1表示通电
2.进制
计算机要进行各类信息的处理,并不是只有01两种,所以就产生了各类进制
二进制:01,逢二进一
八进制:01234567,逢八进一
十进制:0123456789,逢十进一
十六进制:0123456789ABCDEF,逢十六进一
二进制是硬件最原始的数据记录方式,但由于二进制会产生大量01组合,记录的数据越大数位越长,很难阅读和理解。所以根据不同的情况,会使用不同的进制。
3.数据分类
计算机要存储数据,就必须将数据进行合理分类,不同类型的数据对应使用不同的方式进行处理
4.数据存储
将大量0、1组成的数据在内存中用元器件的通电与断电形式进行存储,所以内存只能临时存储数据
Java内存
堆
堆里是主要数据存储空间,大量的数据本体会被存储在这里空间内,同时这个区域的空间是动态的,当需要空间时进行申请,堆就会分配一块区域给你,用完之后再归还给堆。它像一条管道一样,先进先出。
栈
但由于堆的特性,导致数据在存入堆后检索速度受限,所以栈是一种对堆的使用方法。我们主要用它来存储Java中的标识符,也就是给放在堆里的数据做个标记,让我们能通过栈更快速的定位到数据在堆里的位置。它像是一个桶一样,先进后出。
使用内存
1.声明
由于堆的特性,我们在使用内存时需要先向内存堆申请一块空间,这块空间的申请必须注明数据类型
2.标识
由于栈的特性,我们需要首先定义一个标识符,表示我们通过这个标识去寻找这块空间
3.赋值
内存堆的使用必须有意义,无效的内存堆空间(null)是一种浪费,不被内存所认可,所以必须申请空间后进行赋值
4.使用
前三步已经完成了对内存的使用,接下来就是通过标识符来使用它
变量
什么是变量
在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量。 变量本质上就是代表一个”可操作的存储空间”。
使用变量
使用变量时,因为有标识符的存在,所以什么地方需要使用只需要写标识符即可。
要存储不同的数据,必须创建对应类型的变量!
目的都是在堆内申请空间,并放入一个数据!
变量的命名规范
- 只能用英文、下划线、数字、$结尾;
- 只能用英文、_、$开头;
- 不能使用关键字命名;
- 有意义;
- 首个单词首字母小写其余首字母大写;
- 虽然可以但一般不使用_$。
常用的关键字
数据类型
Java数据类型分为基本数据类型和引用数据类型。
基本数据类型分为数字类型和非数字类型。
整数类型:(byte、short、int、long)
小数类型:(float、double)
非数字数据类型:(char、boolean)
引用数据类型:类(class)、接口(interface)、数组(array)
数据类型详解
运算符
算术运算符
+、-、、/、%、++、–、+=、-=、=、/=、%=
int num1 =10;
int num2 =20;
//算数运算符
System.out.println(num1+num2);
System.out.println(num1-num2);
System.out.println(num1*num2);
System.out.println(num1/num2);
System.out.println(num1%num2);
int num3 = 30;
num3++; //num3++ 相当于 num3 = num3 + 1 = 30 + 1 = 31
System.out.println(num3);
int num4 = 30;
num4--; //num4-- 相当于 num4 = num4 - 1 = 30 - 1 = 29
System.out.println(num4);
int num5 = 10;
num5 += 5; //num5 = num5 + 5 = 10 + 5 = 15
System.out.println(num5);
int num6 = 10;
num6 -= 5; //num6 = num6 - 5 = 10 - 5 = 5
System.out.println(num6);
int num7 = 10;
num7 *= 5; //num7 = num7 * 5 = 10 * 5 = 50
System.out.println(num7);
int num8 = 10;
num8 /= 5; //num8 = num8 / 5 = 10 / 5 = 2
System.out.println(num8);
int num9 = 10;
num9 %= 5; //num9 = num9 - 5 = 10 % 5 = 0 余数为0
System.out.println(num9);
结果:
30
-10
200
0
10
31
29
15
5
50
2
0
逻辑运算符
&、|、!、&&、||
//逻辑运算符
int num1 =10;
int num2 =20;
System.out.println(num1>num2 && num2 >10);
System.out.println(num1>num2 || num2 >10);
System.out.println(num1!=10);
结果:
false
true
false
比较运算符
<、>、>=、<=、==、!=、equals
//比较运算符
System.out.println(num1>num2);
System.out.println(num1<num2);
System.out.println(num1>=num2);
System.out.println(num1<=num2);
System.out.println(num1==num2);
System.out.println(num1!=num2);
//equals专门用来判断两个字符串的值是否相等。
String str1 = "欣知";
String str2 = "欣知";
System.out.println(str1.equals(str2));
String str3 = "大数据";
System.out.println(str1.equals(str3));
结果:
false
true
false
true
false
true
true
false
赋值运算符
=就是赋值运算符,目的是将=右边的数据,赋值给=左边的空间。
即:=右边永远都是数据,或可以得到数据的表达式;=左边永远都是一块可以存放对应数据类型的空间
int num1 =10;
int num2 =20;
String str = "欣知大数据";
System.out.println(num1);
System.out.println(num2);
System.out.println(str);
结果:
10
20
欣知大数据
三目(三元)运算符
?是三目运算符,当表达式结果为true,则执行?后面的代码;当表达式结果为false,则执行:后面的代码。
//三目运算
String str4 = "欣知";
String str5 = "架构师";
int num10 = str4.equals(str5)?521:666;
System.out.println(num10);
结果:
666