目录
计算机内存
内存的作用
内存的主要作用是用来平衡cpu的处理速度和硬盘的读取速度。一块硬盘的读取速度是100M/s。而的处理速度远远超过这个速度,所以如果没有内存参与,可能会产生硬盘全力读取,CPU却一直空闲的状态
内存的工作原理
- 数据分类
不同类型的数据进行存储要提前分类,内存要确保自己存储的信息能被认知。 - 数据的储存
将大量0、1组成的数据在内存中用元器件的通电与断电形式进行储存,所以内存只能临时存储数据。 - 数据形式
- 既然要存储数据,到底什么是数据?在计算机中其实没有数据的概念,只有0、1。
- 进制
数据是由0、1组成的,不同情况有不同的使用,哪必须有不同的进制。
实现封装的步骤
数据形式
通常计算机能帮我们记录数据,而计算机是通电运行,所以我们用电流来表达数据。计算机大部分硬件中,通电表示1,断电表示0,这样就形成大量的01组合也就产生了数据。
数据进制
二进制是硬件最原始的数据记录方式,但由于二进制会产生大量01组合,记录的数据越大数位越长,很难阅读和理解。所以根据不同的情况,会使用不同的进制。
数据分类
计算机有很多数据类型,为不同类型的数据所准备,也就是说不同类型的数据存放在内存所对应类型的空间中。
JAVA中的数据类型
类型 | 占用空间 | 取值范围 | 默认值 |
---|---|---|---|
byte | 1字节 | -128~127 | 0 |
shot | 2字节 | -215~215-1 | 0 |
int | 4字节 | -231~231-1 | 0 |
long | 8字节 | -263~263-1 | 0L |
float | 4字节 | -3.403E38~3.403E38 | 0.0F |
double | 8字节 | -1.798E308~1.798E308 | 0.0D |
char | 2字节 | 0~65535 | \u0000 |
类型 | 取值范围 |
---|---|
boolean | true、false |
数据存储
内存其实是个大网,像一张表格一样充满了行和列,行列交错也就产生了单元格,每个单元格存储1位信息,通常每段信息的第一个单元格被称为”内存起始地址”,用来记录数据在内存中的位置。
Java内存应用
堆
堆里是主要数据存储空间,大量的数据本体会被存储在这里空间内,同时这个区域的空间是动态的,当需要空间时进行申请,堆就会分配一块区域给你,用完之后再归还给堆。它像一条管道一样,先进先出。
栈
但由于堆的特性,导致数据在存入堆后检索速度受限,所以栈是一种对堆的使用方法。我们主要用它来存储Java中的标识符,也就是给放在堆里的数据做个标记,让我们能通过栈更快速的定位到数据在堆里的位置。它像是一个桶一样,先进后出。
变量
命名
- 只能用英文、下划线、数字、$结尾
- 只能用英文、_、$开头
- 不能使用关键字命名
Java中存在很多已经预先被使用并赋有意义的英文,被称为关键字 - 个单词首字母小写其余首字母大写
- 虽然可以但一般不使用_$
虽然可以使用_$,但在特殊情况会导致程序出错,所以一般不推荐
声明变量
int表示要存储的数据类型是整数类型,num表示标识符
赋值
=表示要将右边的数据存放在左边的变量中。
使用变量
使用变量时,因为有标识符的存在,所以什么地方需要使用只需要写标识符即可。目的都是在堆内申请空间,并放入一个数据!要存储不同的数据,必须创建对应类型的变量!具体要使用哪个数据类型,必须大家通过现实需求进行分析!
逻辑运算符
算数运算符
+、-、*、/、%、++、–、+=、-=、*=、/=、、%= |
---|
- +比较特殊,在几个数字的运算中,+扮演了“加”的角色。
- 在编程语言中,除法运算被拆分成了两部分,/求商和%求余数。
- num1++,是num1 = num1 + 1;的缩写,也就是让num1本来的值加1。
- ++num1,作用同num1++,但在程序中会优先计算,num1++则会优先使用变量的现有值。
- num1–,是num1 = num1 - 1;的缩写,也就是让num1本来的值减1。
- –num1,作用同num1–,但在程序中会优先计算,num1–则会优先使用变量的现有值。
- num1+= 2,是num1 = num1 + 2;的缩写,也就是让num1本来的值与2相加。num1-= 2,是num1 = num1 - 2;的缩写,也就是让num1本来的值与2相减。*=、/=、%=,同理。
比较运算符
>、<、>=、<=、==、!=、equals |
---|
- 比较运算符是用来对运算符左右两个变量的值进行比较,得到结果是boolean类型,因为无论是何种比较,结果只有真或假两种。
- 注意:单个=是赋值运算符,两个==才是比较。
- ==用来判断基本数据类型是否相等,而String属于引用数据类型。
- equals专门用来判断两个字符串的值是否相等。
逻辑运算符
运算符 | 用法 | 作用 |
---|---|---|
&&、& | num1>num2&&num1<10 | 与,前后条件同时true,则true |
||、| | num1==5 | |
! | !(num1>10) | 非,除了表达式的情况之外为true |
- 比较运算符是用来对运算符左右两个变量的值进行比较,得到结果是boolean类型,因为无论是何种比较,结果只有真或假两种。
- &按位与,要依次判断前后表达式结果,&&逻辑与,左边为false就为false
- |按位或,要依次判断前后表达式结果,||逻辑或,左边为true就为true
- x==33 & ++y>0 该表达式无论结果如何,y的值总会+1。x==33 && ++y>0 则y的值不+1。
运算符优先级
()>!>算数运算符>比较运算符>&&>|| >赋值运算符 |
---|
- 当运算优先级不够时,可以在表达式外边增加小括号()来提升表达式的优先级。
三目运算符
?是三目运算符,当表达式结果为true,则执行?后面的代码;当表达式结果为false,则执行:后面的代码。