◆ 电脑每次读数据时,都要先把地址的指令发过去,发完指令之后才能知道去哪里读地址。一般存储的话要分好几个模块,每个模块都有相应的地址,要想读这块数据,必须先发送它的地址。
内存和磁盘的关系:
◆ 内存、磁盘大小4KB为一个存储单元 ,也就是页,但是磁盘大小可以更改
◆ 在内存中,变量实际占有空间以操作系统划分空间为准,实际上一个变量至少消耗4KB ,也就是一个存储单元至少消耗4KB。
磁盘如图所示
◆ 打算法用数组比较节省空间 ,时间效率也高一些
String和StringBuilder区别:
字符串每次都要重新申请空间
StringBuilder就是提前申请一个较大的空间,不用每次申请新的地址
如果不够的话会成倍申请空间,然后把原来数据拷贝进去
如果空间足够大还是4KB就不用消耗新的地址了,另外如果申请了三个空间只能存三个,想要四个只能在申请一个。
Stringbuilder只有在需要大量的修改字符串导致字符串长度经常发生变化时它的效率比较高
注:量大的时候就用StringBuilder 量少的时候就用String
StringBuilder和StringBuffer原理相同 ,但是StringBuffer加锁了所以慢一点
StringBuffer和StringBuilder是基于字符数组
3.7输入和输出
读取输入:int x1 =xx.nextInt();
输出:arr[i]=xx.nextInt();
获取路径: //经常使用
import java.util.*;
public class Test{
public static void main (String [] aaa){
String dir=System.getProperty("user.dir");
System.out.println(dir);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/3a3fa898b8f5083a14bb24edc60a4fd6.png)
重要面试点:
记事本显示原理:计算机内部都是二进制,记事本文件也是二进制,根据头部编码判断采用的是哪种编码,然后读取相应的位数,去形状库里面匹配,根据库里面的编码,匹配输出,然后给显示器显示出来。
Word 文档显示:相对于记事本来说要复杂一点,记事本只有字体没有颜色要求。Word文档中字体不同形态对应不同的编码,常用字号也有相应的编码,WPS字号是实时计算的,所以Word文档要比WPS速度快一些。英文字体形状相似,可能好多字体共用一套编码。空格、换行都可以编码。编程语言操作就是操作它的编码,然后等长等长的读取编码。
Switch击穿:就是如果语句中间少了一个break,直接执行下面的语句,直到执行到下一个break语句结束。
Switch可选中类型:char、byte、short、int、枚举、字符串
注意for循环的执行顺序,应该执行第一步:int a=0
执行第二步:判断a<10?
执行第三步:System.out.println("aaaaaa");
执行第四步:a++;
for(int a=0;a<10;a++)
{
System.out.println("aaaaaa");
}
注意 有规律的计算一律套用公式,不能用for循环
eg:累加要用用高斯公式
break和continue区别:
break 打断此次循环,直接中断, 后面的也不执行了,只能打断内循环一层,不能打断外循环
continue 直接进行下次循环,不执行此次条件下的循环,后面接着循环
超范围运算都会引起计算错误,BIglnteger 解决了超大运算问题
数组
int[] a=new int[10];//不是空数组,每个上面都有0
int[] b={1,2,3,4};
int[] c=new int[] {2,3,4,5};
以上都是数组的声明方式,第一个申请空间不是空的,默认是0
注意:数组是引用类型 不是基本类型
二维数组 表示:
三维数组表示:
其中int[][][] c =new int[3][4][5]; 表示个二维数组 四个一维数组 一维数组有5个元素
不规则数组:
基本类型和引用类型:
基本类型值可以发生改变,直接变就行
引用类型不可以直接变 (Java没有指针)引用类型中的“=”相当于自己指向换掉
引用类型句柄和值不在一起
C++ 指针和引用类型一样,都是在改变自己的指向
一维数组指向:
二维数组指向:int[][] a=new int[3][5];
a[1][3]=89;
执行语句: String arr={"aaa","ddd","000"};
arr[0]="yyyyyy";
for each循环
经常用排序算法:
int[] a={4,45,99,90,88,78,9};
Arrays.sort(a);//排序
for(int b:a){
System.out.println(b);
}
数组拷贝: