数据类型转换:
1.自动类型转换 long l = 100; 等号的左边的数据类型的范围 大于等号右边的数据的范围
2.强制类型转换 float f = 3.14F; 等号的左边的数据类型的范围 小于等号右边的数据的范围
强制类型转换出现的问题: 1.精度损失 int num = (int)88.88; //88
2.数据溢出 数据不准确
do..while 第一次执行无论条件是否成立都会执行
for 循环 循环次数已经 明确知道的情况下 使用
while 循环 循环次数不明确的
死循环:
while (true ){
循环体;
}
for(;;){}
break; //直接跳出循环
continue; //直接跳出当前次的循环 继续下一次的循环
/*
Scanner sc = new Scanner(System.in);
System.out.println("第一个数据:");
int num1 = sc.nextInt();
System.out.println("第二个数据:");
int num2 = sc.nextInt();
//最大公约数; 5 25 5 1 - 15 25%i==0 && 15%i==0
int max = num1 > num2 ? num1 : num2;
int min = num1 < num2 ? num1 : num2;
for (int i = min; i > 0; i--) {
if (max % i == 0 && min % i == 0) {
System.out.println(i);
break;
}
}
*/
Random随机数:
1.导包
import java.util.Random;
2.创建对象
Random r = new Random();
3.调用方法:
int num = r.nextInt(10);//生成一个数 在10以内 包括0但是不包括10;
注意:
生成A -Z的随机数 A(65) Z(90);
应该写成: r.nextInt(90-65+1)+65;
/**
//输入一个数据 列出该数据的所有的因子 6 1,2,3、6
//完数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = sc.nextInt();
// num = num/0;
//如何获取该数据的因子
for (int i = 1; i < num; i++) {
if (num % i == 0) {
System.out.println("因子:" + i);
}
}
}*/
/** 求最大公约数和最小公倍数
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int num1 = scanner.nextInt();
System.out.println("请输入第一个数据:");
int num2 = scanner.nextInt();
//求最大公约数:5 25
int min = num1 > num2 ? num2 : num1;
int max = num1 > num2 ? num1 : num2;
for (int i = min; i > 0; i--) {
if (min % i == 0 && max % i == 0) {
System.out.println("最大公约数是:"+i);
break;
}
}
//最小公倍数
for (int i = max; i <= max * min; i++) {
if (i % max == 0 && i % min == 0) {
System.out.println("最小公倍数是:" + i);
break;
}
动态初始化(创建) 只需要知道一个是 数据类型 长度
格式:
数据类型[] 变量 = new 数据类型[长度];
boolean[] b = new boolean[2];
只要是看到中括号[] 优先考虑是不是数组
长度 指的是我们创建的数组里面存储几个具体的元素
new 代表创建一个新的对象 (在内存里面 申请一个新的空间 保存数据)
如何访问数组里面的元素:
根据 索引(下标)
内存:
硬盘 内存 缓存(寄存器 CPU)
** 栈 区 Stack:
1.存储的都是局部变量
2.方法执行的时候会进栈执行
** 堆区 Heap:
new 出来的东西都在堆区里面
* 方法区 :
加载字节码文件
本地方法栈
寄存器
静态初始化:
格式:
数据类型[] 变量 = new 数据类型[]{元素1,元素2,...};
int [] arr = new int[]{2,3,5,8};
静态的省略格式不能拆分成两部分
//例如:int [] arr = new int[]{2,3,5,8};==> int [] arr; arr = new int[]{2,3,5,8};
//错误的案例: int [] arr ={2,3,5,8}; ==> arr ={2,3,5,8};
变量也可以作为静态的元素存储
// 例如: int a =10; int b = 11; int[] arr = {a,b};
两个异常:
ArrayIndexOutOfBoundsException //数组的索引越界异常
int[] arr = new int[5]; //最大索引是4 arr[6]
NullPointerException //空指针异常 有没有给数组进行赋值
//随机生成10个0-9之间的随机数存入数组中
int[] arr = new int[10];
Random rd = new Random();
for (int i = 0; i < arr.length; i++) {
int num = rd.nextInt(10);
arr[i] = num;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//求最大值
int[] array = { 5, 15, 30, 20, 10000, 30, 35 };
int max = array[0]; // 比武擂台
for (int i = 1; i < array.length; i++) {
// 如果当前元素,比max更大,则换人
if (array[i] > max) {
max = array[i];
}
}
// 谁最后最厉害,就能在max当中留下谁的战斗力
System.out.println("最大值:" + max);
}
int min = array[0]; // 比武擂台
for (int i = 1; i < array.length; i++) {
// 如果当前元素,比min更小,则换人
if (array[i] < min) {
min = array[i];
}
}
System.out.println("最小值:" + min);
}
方法:
功能独立的代码块
定义方法
方法的调用
方法的定义
格式:
public static void 方法名(){
方法体;
}
方法的调用:
现在都写在 main方法里面
方法名();
带参数的方法的格式:
public static void 方法名(数据类型 变量1,数据类型 变量2...){
方法体;
}
方法的调用:
方法名(实参);
实际参数: 方法调用的时候 (写的时候 就是一个常量)
形式参数: 定义方法的时候 变量
带参数带返回值的方法的定义格式:
void
public static 返回值类型 方法名(数据类型 变量名1,数据类型 变量名2,...){