属于个人的所学的知识总结,不是全面的
1.JDK、JRE和JVM三者的区别
01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心。包括了Java的运行环境、JRE、一堆Java工具和Java基础的类库。
02.JRE:(Java Runtime Envirnment)就是我们平常说的Java平台,所有的Java程序都要在JRE的环境下才能运行。包含了JVM,Java的核心类库,但是不包含开发工具——编译器、调试器。
03.JVM:(Java Virtial Mechinal)Java虚拟机,属于JRE的一部分。主要的工作是:解释自己的字节码文件,并且映射到本地的CPU的指令继承OS系统调用。Java是跨平台的,就是基于JVM,使用JVM的映射规则,让其变得与操作系统无关。JVM不关心我们写的.Java文件,只关注.class文件(因为.class文件有JVM需要的指令集)。
2.计算机程序
为了让计算机执行某些操作或者解决某个问题而编写的一系列有序指令的集合。
3.包的声明:(package)
代表我们当前的Java源文件在项目中的位置,必须位于除了注释之外的第一行,而且整个Java源文件中,只允许有一个包的声明。
包的命名规范:
01.域名倒置。02.包名全小写
优点:01.便于管理我们的项目 ;02.避免类名冲突
4.注释的目的:
01.方便团队人员的阅读
02.方便项目后期的维护
5.单个词的解释
01.public:访问权限最松的一个,公共的。
02.class:类,是构成我们程序的最小的单位
03.HelloWorlc:类名,必须和Java源文件的名称一致。
04.{}:必须是成对出现,有开始,有闭合。
05.static:修饰符
06.void:代表方法返回值类型,如果方法没有返回值,则必须写成void。
07.main:方法的名称
08.String []:参数的类型
09.args:参数的名称
10.import:导入
11.continue:代表的是,结束本次循环继续下次循环,之后的代码不是执行。
12.break:跳出当前整个循环体
13.return:跳出当前方法,可以带有返回值
6.命名法:
01.帕斯卡命名法:第一个单词首字母大写,其余的单词首字母也大写。适用于类名,常量,静态常量
02.驼峰命名法:第一个单词首字母小写,其余的单词首字母大写。适用于变量
7.变量:一个数据在内存中存储空间的表示,在运行期间可以动态改变。
变量的命名规范:
01.满足驼峰命名法,首字母小写
02.有意义
03.首字母必须以字母,下划线_ 美元符号$ 人名币符号¥开头
04.对大小写敏感
05.不能使用关键字和保留字作为变量名
8.常量:在运行期间,不允许改变的量。
使用规范:
01.常量名通常大写
02.不同的单词之间使用下划线分隔
03.只能被赋值一次,通常在声明的时候赋予初始值
9.局部变量没有初始值,全局变量有初始值。在类中直接定义的变量是全局变量
10.scanner的测试方式:
01.一个一个的输入测试
02.一次性输入所有,每个变量之间使用空格隔开
11.++自身加1
01.++在前:自身加1,再执行操作
02.++在后:先执行操作,再自身加1
12.自动类型转换规则:
01.如果一个操作数是double,则整个表达式都是double
02.操作数要互相兼容,数值类型的数据
03.目标类型大于源类型
13.强制类型转换:把大的数据类型转换成小的数据类型
14.实现一个数字加密器,加密规则是
加密结果=(整数*10+5)/2+3.14159
加密后的结果仍为一个整数
****华氏温度和摄氏温度的转换***************
华氏温度 = 摄氏温度 * 9 / 5.0 + 32
15.运算符:
一元运算符:一个表达式就可以参与运算。如++,--
二元运算符:两个表达式就可以参与运算。如,+,-,*,/
三元运算符:三个表达式就可以参与运算。
如,数据类型 变量名 = 表达式1?表达式2:表达式3;
表达式1:必须是boolean类型的值,也就是必须使用关系运算符。
表达式2:表达式1为true的时候执行的表达式。
表达式3:表达式1为false的时候执行的表达式。
16.hasNext...()系列
01.获取用户的输入
02.判断用户的输入
17.逻辑运算符:
01.&&与,并且 表达式1&&表达式2
001.如果表达式1为false,则不会执行表达式2,直接返回false。
002.如果表达式1为true,则继续执行表达式2
003.两个表达式都为true,整体才返回true
004.如果其中一个表达式为false,整体返回false
02.|| 或者
001.如果其中一个表达式为true,整体返回true
002.如果表达式1为true,则不会执行表达式2,返回true
03.! 非
18.选择结构:
01.if(boolean类型的表达式){
输出语句;
}
02.if(boolean类型的表达式){
输出语句;
}else{
输出语句;
}
03.if(boolean类型的表达式){
输出语句;
}else if(boolean类型的表达式){
输出语句;
}else{
输出语句;
}
04.if(boolean类型的表达式){
if(boolean类型的表达式){
输出语句;
}else{
输出语句;
}
}else{
输出语句;
}
19.使用switch做等值的判断
表达式的取值:byte ,short ,int ,char , Enum(枚举) ,String(1.7+)
switch(表达式){
case 常量1:
//代码块
break;
case 常量2:
//代码块
break;
default:
//代码块,没有找到匹配项,会执行default
break;
20.循环结构
01.while(循环条件必须是一个boolean类型的值){
循环体(循环操作)
}
02.do{
循环体(循环操作)
}while(循环条件);
03.for(表达式1;表达式2;表达式3){
循环体
}
表达式1:初始化变量, int a =0;
表达式2:循环条件,满足条件执行循环体操作
表达式3:迭代变量
三个表达式都可以省略,但是;不能省略
执行顺序:
表达式1——》表达式2——》循环体——》表达式3——》表达式2——》循环体——》表达式3
21. a+=b和a=a+b是否一致?
int a =5;
double b = 5;
a = a + b;//编译报错
a += b;//不会编译报错,底层做了强制类型转换
22.冒泡排序的规则:
01.外层循环 N-1(N:数组的长度)
02.内层循环N-1-i (i:比较的轮数,外层循环的变量)
03.两两相比 小靠前,必须进行等量转换,互换位置。
23.双重循环的中心思想:
外层循环每执行一次,内层循环执行一遍。
24.求最大值
01.定义一个擂主max
02.循环打擂
03.如果数组中的元素大于max,就让当前的元素的值给max
25.求最小值
01.定义一个最小值,默认是数组中的第一个元素 变量类型 min = nums[0];
02.循环打擂
03.如果发现数组中的元素小于min 把元素的值给min
26.插入算法
01.找到需要插入数据的位置
int index = nums.length;
02.循环找到位置
for(int i=0;i<nums.length;i++){
if(num > nums[i]){
index = i;
break;
}
}
03.元素后移
for(int j = nums.length-1;j > index ; j--){
nums[j] = nums[j -1];
}
04.插入数据
nums[index] = num;
27.冒泡排序
外层循环控制轮数,数组的长度 -1
外层循环每执行一次,内层循环执行一遍
无论多少个数字相比,都是相邻的两个数组进行比较,数值小的元素会交换前面的位置
代码:
外层循环:数组长度-1
内层循环:数组长度-1-i
26.数组:一组相同数据类型的集合,在内存中开辟一连串的空间。
01.声明数组 02.分配空间 03.赋值 04.使用
如,01.int [] nums; nums=new int[5]; nums[0]=50;
02.int [] nums = {1,2,3,4}
27.数组的常用API
01.Arrays:数组的操作类,作用是进行升序排列
02.equals(arr1,arr2):比较两个数组的内容和长度是否一致
03.sort(arr):对数组中的元素进行升序的排列
04.toString:把一个数组变成字符串
05.fill(arr,val):将arr数组中的所有元素都赋值成val
06.copyOf(arr,length):将数组arr赋值成一个长度为length的新数组
07.binarySearch(arr,val):查询val在arr数组中的下标
28.练习题
https://wenku.baidu.com/view/b6b045503c1ec5da50e270c5.html