一丶数据类型
变量命名:数字开头不行、%不行、空格不行
1字节8位
int:4字节 byte:1字节 short:2字节 long:8字节
(浮点数) float:4字节 double:8字节
final 常量(一般变量名大写好区分)
浮点数默认类型为double
float num = 5.6f;
t 空格
n 换行
二丶运算符
个位:n%10
十位:n/10%10
百位:n/100%10
(?:)条件运算符
int x = 8;
int y = 9;
System.out.println((++x!=y)&&(++x==y));
System.out.println(x);
输出结果:false 9
int x = 8;
int y = 9;
System.out.println((++x!=y)||(++x==y));
System.out.println(x);
输出结果:false 10
三丶JAVA基础
JDK java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,
是提供给程序员使用的。(包含类库)(开发程序通过javac编译为字节码文件)
JRE java运行时环境,包含了java虚拟机,java基础类库。(比JDK少编译器,调试器等工具)
(运行字节码文件)
JVM java虚拟机(堆、栈)(解析字节码文件,映射到操作系统平台上)
JDK包含JRE,JRE包含JVM
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
编译:java文件 -> class文件
反编译工具:jad(cmd指令:jad -s java -8 文件名.class)(-8 解决中文乱码)
FrontEndPlus
四丶选择结构
流程控制:控制程序中各语句的执行顺序
流程图:圆角矩形(程序开始结束)
直角矩形(计算步骤/处理符号)
平行四边形(输入/输出指令)
菱形(判断和分支)
圆形+箭头(连接符)
上下箭头(流程线,程序方向)
Math.random() (0-1的浮点数)
int random = (int)(Math.random()*10); (0-9的整数)
五丶循环结构
switch与多重if
相同点:都是用来处理多分支条件的结构
不同点:switch选择结构只能处理等值条件判断的情况
continue:跳过循环体中剩余的语句而执行下一次循环
break与continue:
使用场合:
break常用于switch结构和循环结构
continue一般用于循环结构
return:结束当前方法的执行并退出,返回到调用该方法的语句处
增强型for/foreach:
for(int score:scores){ (迭代)
sum+=score;
}
六丶数组
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一块连续的空间
数组是一个变量,存储相同数据类型的一组数据
数组基本要素:
标识符 数组元素 元素下标 元素类型 长度(固定不变)(声明数组时不规定)
声明数组 int[] a;
分配空间 a = new int[5];
赋值 a[0] = 8;
处理数据 a[0] = a[0] * 10;
计算机内存:
jvm虚拟机空间内存(栈、堆(人为取名))
栈:数组变量(数组名)
堆:数组值/对象
通过栈内存找到堆内存里的值
变量 int i=5; 都放在栈里
七丶冒泡排序
冒泡排序:
每次比较相邻俩数
小的交换到前面
每轮结束后最大的数交换到最后
num
for(int i=0;i
if(num[j]>num[j+1]){
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
n个数字来排队
俩俩相比小靠前
外层循环n-1
内层循环n-i-1
共比较 n*(n-1)/2 次
八丶二维数组
类(class) ( java.util.Array :java.util包提供的工具类 )
包:放一堆的类(util:jdk提供包)
Arrays.sort(数组名); 升序排列
.equals(数组名,数组名) 比较是否相等
.toString(数组名) 转换成字符串
.fill(数组名,val) 所有元素赋值为val
.copyOf(数组名,length) 复制成一个长度为length的新数组,返回值类型与复制数组一致(int类型填充0)
.binarySearch(数组名,val) 查询元素值val在数组中的下标(要求数组已经按升序排列)(找不到返回随机负数)
三维及以上数组很少使用
主要使用二维数组
从语法上java支持多维数组
从内存分配原理的角度讲,只有一维数组
<数据类型>[][]数组名;
<数据类型>数组名[][];
int[][] scores = new int[][]{{90,85,95,95,41},{98,85},{100}} [0][5],[1][2],[3][1]
定义二维数组时,要定义最大维数
二维数组实际上是一个一维数组,它的每个元素又是一个一维数组
九丶选择排序
选择排序:
下标为i的元素一次和之后的所有元素比较,找到本轮最小(大)的元素
将最小元素与下标为i的元素交换
比冒泡排序交换次数少,但比较次数不变
int[] arr = {....};
int min=-1; //最小值下标
for(int i = 0; i < arr.length-1;i++){
min = i;
for(int j = i + 1;j < arr.length;j++){
if(arr[min]>arr[j]){
min = j;
}
}
if(min != i){
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
十丶二分(折半)查找法
定义数组(有序)
将要查找的元素和数组中间的元素比较,如果没找到则继续折半
int[] arr={.....};
int searchNum = 4; //要查找的数字
int startIndex = 0; //定义开始查找范围的下标
int endIndex = arr.length-1; //定义结束查找范围的下标
int midIndex = -1 //定义中间位置的下标
boolean inFind = false;
do{
midIndex = (startIndex + endIndex)/2;
if(arr[minIndex] == searchNum){
System.out.print(“找到了!”);
inFind = true;
break;
}else if(arr[minIndex] > searchNum){
endIndex = midIndex - 1;
}else if(arr[minIndex] < searchNum){
startIndex = midIndex + 1;
}
}while(startIndex <= endIndex){
if(!inFind){
System.out.print(“抱歉,没找到!”);
}
}
十一丶程序基础
1.程序基本概念
1.程序基本概念
类名:首字母大写,其后每个单词首字母要大写 MyDemo(帕斯卡命名规则)
变量名:首字母小写,其后每个单词首字母要大写 myScore(驼峰命名规则)
变量(本质:内存空间的表示)
数据类型:
基本数据类型: int float double char
引用数据类型: String 数组
能.出来东西一般都是引用数据类型(数组.length())
变量名=值;
运算符:
赋值运算符
算术运算符(++ -- / %)
比较运算符(==)
逻辑运算符(&& || !)
条件运算符(?:)
2.流程控制
顺序结构
选择结构(分支)
if if-else if-else if-else if-else switch
循环结构
常见的循环
for while do-while
双重循环
跳转语句
break continue return
数组+循环
数组使用步骤
int[] nums = new int[]{};
数组几个要素:
数组长度(length)
数组元素
数组下标(从0开始)
数组类型
数组常见异常
ArrayIndexOutofBoundsException:下标越界
数组和循环结合使用
(1)for
(2)增强型for
二维数数组