1 JRE:JVM+类库 JVM虚拟机 2 JDK:JRE+JAVA的开发工具 3 开发工具:编译工具(javac.exe) 打包工具(jar.exe)等 4 java 程序运行流程 .Java文件源代码文件……通过编译器编译……生成 .class字节码文件…….通过解释器解释执行 5 System.out.println("HelloWorld") 输出语句双引号内是字符串, 6 控制台写过的命令可用上下箭头重复执行 7*一般不是{}结尾的加 分号; 8关键字全部为小写 9 整数默认'int'类型 浮点数默认'double' 10file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 11 给 包,类,方法,变量等起名字 命名原则:见名知意 a包 最好是域名倒过来,要求所有的字母小写 b类或者接口 如果是一个单词首字母大写 如果是多个单词每个单词首字母大写(驼峰标识) c方法或者变量 如果是一个单词全部小写 如果是多个单词,从第二个单词首字母大写 d常量 如果是一个单词,所有字母大写 如果是多个单词,所有的单词大写,用下划线区分每个单词 12注意: 整数默认是int类型,定义long类型的数据时,要在数据后面加L。 浮点数默认是double类型,定义float类型的数据时,要在数据后面加F。 13变量定义的注意事项• 变量未赋值,不能直接使用 – 引出变量的第二种使用格式 • 变量只在它所属的范围内有效。 – 变量在哪对大括号内,变量就属于哪对大括号 • 一行上可以定义多个变量,但是不建议 14隐式转换 • byte,short,char-- int -- long -- float -- double 15强制转换的格式 • byte b = (byte)(a + b); • 强制转换:目标类型 变量名 = (目标类型) (被转换的数据); • 不建议强制转换,因为会有精度的损失。 16 而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示 17 赋值只在大括号内有效 18 字符串的数据类型是 String 数组的数据类型 元素类型+[] int[] Public static int[] getIntArr(){
int[] arr={1,2,1,2,1,2};
return arr;} 19无论是内存还是硬盘,计算机存储设备的最小信息单元“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。 而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。 · 20 font: [fɒnt], 字体 basic: [ˈbeɪsɪk], 基本的 text: [tekst], 文本 edit: [ˈedɪt], 编辑 · format: [ˈfɔ:mæt], 格式化 flag: [flæg], 标志 § § String next(): [nekst], 获取键盘录入的字符串, 当获取到有效字符串后结束 § String nextLine(): [nekst][laɪn],获取键盘录入的字符串, 以换行符结束 § int nextInt(): [nekst][ɪnt], 获取键盘录入的整型数值 21 字符串进行运算,实际为用字符对应的数值运算, ( ‘a’ 97) (‘A’ 65) (‘0’ 48) 而字符串进行运算是 字符串的拼接, 尤其输出数组时用 字符串中 \为转义符 ,"\....."中斜杆会把和后面的组合起来, 所以字符串中,要用两个\表示一个, 即\\来表示\ int a=10; int b=20; syso(“hello”+a+b) ; ……………输出hello1020 从左到右 字符串+数值=字符串 syso(a+b+ “hello”); ………………输出30hello 22 a++ 表示先运算,后自增1 ++a 则相反,表示县自增1,再参与运算 23 关系运算符包含以下内容: ==,!=,>,>=,<,<= 关系运算符的结果都是boolean型,也就是要么是true,要么是false。 24 'A' ==65 'a'==97 ' 0 '== 48 25 :&&和&的区别? a:最终结果一样。 b:&&具有短路效果。左边是false,右边不执行。 &是无论左边是false还是true,右边都会执行 同理 |和||; 26 % 取余时 X%Y正负只和X有关 27 键盘录入: A:导包 import java.util.Scanner; B:创建对象 Scanner sc=newScanner(System.in); C:接收数据 数据类型 变量名=sc.nextInt(); (sc即对象名) int x = sc.nextInt(); 创建随机数: A: import java.util.Random; Random r=new Random(); int x=r.nextInt(10); ………….[0,10) 不包括10 创建数组 数据类型[] 数组名 = new 数据类型[数组长度]; int[] arr = new int[3]; 28 连续输出多个变量时用 加号 接引 双引号空格 即可 System.out.println(Java +" "+SQL+" "+Web); 30 tring next() ; 获取键盘录入的字符串, 当获取到有效字符串后结束 StringnextLine(); 获取键盘录入的字符串, 以换行符结束 intnextInt() ; 获取键盘录入的整型数值 String c = (b == 0)?"偶数":"奇数"; 29三元运算符:格式 (关系表达式)?表达式1:表达式2; 如果条件为true,运算后的结果是表达式1; 如果条件为false,运算后的结果是表达式2; 比较两个数的大小 int a = 10; int b = 20; int c = (a > b) ? a : b;……………………………..c=20 比较两个数是否相同 int a = 10; int b = 20; boolean flag= (a== b) ? true: false; 获取三个数最大值 // 定义三个int类型的变量 int a = 10; int b = 30; int c = 20; // 先比较两个整数的大值 int temp =((a > b)? a : b); int max =((temp > c)? temp : c); System.out.println("max:"+ max); 30System.out.println换行 System.out.print 不换行 31 字符串 "qwe wqwe df " 32 导包快捷键 ctrl+shift+O 33 * for (初始化语句; 判断条件语句; 控制条件语句) {循环语句 ; } 判断条件决定,for是否执行 * while(判断条件语句) { 循环体语句; } * 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句;} 1 实现多次猜cun数据. 34 While(ture){循环语句; while (true){ System.out.println("请输入你猜的数字"); int i =sc.nextInt(); if (i>number){ System.out.println("大了"); }else if(i<number){ System.out.println("小了"); }else{ System.out.println("猜中了"); break; } } 先列错误的情况,最后else正确的 break结束; 键入数据要在while内,但在if之外 35 sum=sum+1 累加 for(int x=1; x<=5; x++) { sum += x; } 36 计数器 int count=0;要定义在主方法中 在if 后边,满足if 条件后,才执行一次 for (int a=100;a<=999;a++){ int g=a*a*a; int s=a/10%10; int b=a/100%10; if(g*g*g+s*s*s+b*b*b==a) { System.out.println(a); count++; } 37 do …while 循环格式 do{ 循环体语句;} 38 for循环实现1-5之间数据求和8 public staticvoid main(String[] args) { //定义求和变量,初始化值是0 int sum =0; //获取1-5之间的数据,用for循环实现 for(intx=1; x<=5;x++) { //把每一次获取到的数据,累加起来就可以了 //sum = sum + x; /* * 第一次:sum= 0 + 1 = 1 * 第二次:sum= 1 + 2 = 3 * 第三次:sum= 3 + 3 = 6 * 第四次:sum= 6 + 4 = 10 * 第五次:sum= 10 + 5 = 15 */ sum += x; } //输出求和结果 System.out.println("sum:"+sum); } } 39 if语句获取两数较大值 int max; if(a>b){ max = a; }else { max = b; } //可能做其他的操作 //max+= 100; System.out.println("较大的值是:"+max); 40 if语句实现判断学生等级0-100 优秀 * 80-90 好 * 70-80 良 * 60-70 及格 * 60以下 不及格 1 键入成绩 2 if语句分情况 (注意错误数据) 41 switch语句的格式A . 表达式的取值:byte,short,int,char B. break表示中断,结束的意思,会结束 switch语句 C. default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。 switch语句实现根据数字输出对应星期 switch(表达式) { (switch(weekday) * case值1: * 语句体1; * break; * case值2: * 语句体2; * break; * default: break; • for循环语句格式:• for(初始化语句;判断条件语句;控制条件语句) { • 循环体语句; } • 输出10次HelloWorld • for(int x=1; x<=10; x++) { • • System.out.println("HelloWorld"); • for循环实现获取指定范围数据 • for(int x=1; x<=5; x++) { • System.out.println(x); • } • for循环实现1-5之间数据求和 A:定义求和变量,初始化值是0 B:获取1-5之间的数据,用for循环实现 C:把每一次获取到的数据,累加起来就可以了 D:输出求和变量即可 int sum 定义在for之外, sum求和则是等for循环结束后在计算, int sum = 0; for(int x=1; x<=5; x++) { sum += x; } System.out.println("sum:"+sum); • for循环打印水仙花数 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身 for(int x=100; x<1000; x++) 循环获取所有三位数100 ~999 //获取个位,十位,百位 int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; • while循环语句格式 while(判断条件语句) { 循环体语句; 控制条件语句; } int x=1; while(x<=10) { System.out.println("HellloWorld"); x++; } • do…while循环语句 初始化语句; do { 循环体语句; 控制条件语句; } while((判断条件语句); public staticvoid main(String[] args) { 输出10次 HelloWorld for(int x=1; x<=10; x++) { System.out.println("HelloWorld"); } //do...while改写 int x=1; do { System.out.println("HelloWorld"); x++; }while(x<=10); } 使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。 • Break的使用 • Break 跳出当前(单层)循环 • for(int x=1; x<=10; x++) { • if(x == 3) { • break; • } • System.out.println("HelloWorld"); • } • 此时只能打印两个HelloWorld • continue 退出本次循环 替换break则回打印9次 2 数据类型[] 数组名; int[] arr; 定义了一个int类型的数组.数组名是arr 数据类型 数组名[];~~~~~~~~~~~~~不推荐 3 数组长度就是数组中元素个数 • 4 动态初始化 数据类型[]数组名=new 数据类型[数组长度] • 静态初始化 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}; 简化格式: 数据类型[] 数组名 = {元素1,元素2,...}; 举例: int[] arr = new int[]{1,2,3}; 简化后: int[] arr = {1,2,3}; • 数组中索引 索引是元素在数组中的序号,从0开始 int[] arr=new int[3] 最大索引2 (0,1,2) 数组名arr存的是地址值 定义在方法中的变量都是局部变量.mian中的都是 • 两个常见小问题: A:java.lang.ArrayIndexOutOfBoundsException 数组越界异常 产生的原因:就是你访问了不存在的索引元素。 B:java.lang.NullPointerException 空指针异常 产生的原因:数组已经不指向堆内存的数据了,你还使用数组名去访问元素。 int []arr={11,33,77,22}; int min=arr[0]; for(int i=0;i<arr.length;i++){ if(min>arr){ min=arr; } } for循环中进行比较,得出数值,最后输出 • System.out.println(“”);换行 int[][]arr=new int[3][]; 不给一维数组是正确的,但必须二维数组 • 一维数组的遍历 for (int i=0;i<arr.length;i++){ System.out.print(arr); } • 二维数组的遍历 for (int i=0;i<arr.length;i++){ for (int j=0;j<arr.length;j++){ System.out.print(arr[j]+" "); }} • 计数器,求和等等,要在循环之外定义,如果在循环内,那么每次循环又会被重新定义而出错 public class Test { public static voidmain(String[] args) { int []arr=new int[1000]; int count=0; int sum=0; for(int i=0;i<=999;i++){ arr =i; int ge=arr%10; int shi=arr/10%10; int bai=arr/100%10; int x=ge*ge*ge+bai*bai*bai+shi*shi*shi; if(x==arr &arr>=100){ System.out.println(arr); count++; sum+=arr; } } • 随机数给所有数组元素赋值 将数字1-10保存到一个长度为10的一维数组中 定义一个新数组,长度为3,取出原来数组中随机三个元素(不考虑是否重复) 给新数组的元素赋值 求新数组所有元素的和 public static voidmain(String[] args) { int []arr=new int[10]; int []arr2=new int[3]; for(int i=0;i<10;i++){ arr =i+1; } Random r=new Random(); for (int m=0;m<3;m++){ int number =r.nextInt(10); arr2 [m]=arr[number]; System.out.println("新数组元素为"+arr2[m]); } } 产生一个0~9之间的随机数; 两步 Random r=new Random(); int x=r.nextInt(10); 二维数组的遍历
// 方式1: 先for循环遍历获取一维数组, 然后for循环遍历一维数组
int[][] arr = {{1,2,3}, {1,2}};
for (int i = 0; i < arr.length; i++) {
int[] arr1 = arr;
for (int j = 0; j <arr1.length; j++) {
int n= arr1[j];
}
}
// 方式2: 先for循环得到二维数组索引i, 然后for循环得到一维数组索引j, 使用二维数组访问元素方式获取元素
int[][] arr = {{1,2,3}, {1,2}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <arr.length; j++) {
int n= arr[j];
}
} 关于return的作用 int count=0; for(int i=0;i<arr.length;i++){ if(arr==3){ count++; return i; } } 注意和return i; 的区别,执行return就是结束方法,count++就不会执行 count++; public staticvoid compare(int a,int b) void 表示没有返回值 只能单独调用 compare(x,y); return; 用来结束 方法重载overload: 在同一个类中,出现方法名相同的情况 * * 特点: 方法名相同,参数列表不同.与 返回值类型 无关,和方法体无关 * 参数列表不同是指: * 参数个数不同; * 参数对应的数据类型不同;(包括顺序,注意对应两个字 ) * public static booleancompare(int a,int b){} 输入double Int可以自动转化成double类型 方法中已经完成了 输出 所以main函数中就 不需要在次输出 方法名第二个单词开始首字母大写 public static int getMax(inta, int b, int c) { 定义方法时 返回数组 public static int[] result(int a,int b){ int sum=a+b; int dec=a-b; int cheng=a*b; int chu=a/b; int []arr={sum,dec,cheng,chu}; return arr; 方法 定义格式: * 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { * 方法体; * return 返回值; public static * } 赋值调用,推荐方式 Void 没有明确返回值的函数调用: 其实就是void类型方法的调用 只能单独调用 打印1到n之间的数据 利用数组遍历 两个明确: * 返回值类型:void * 参数列表:int n 把所有的水仙花数打印在控制台 public static voidprintFlower() { for(int x=100; x<1000; x++){ int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x){ System.out.println(x); } } } public static voidmain(String[] args) { printFlower(); } 遍历数组 public staticvoid main(String[] args) { int[] arr = { 11, 22, 33, 44, 55 }; // 遍历 //[元素1, 元素2,元素3, ...] printArray(arr); } public static voidprintArray(int[] arr) { System.out.print("["); for(int x=0; x<arr.length; x++){ if(x==arr.length-1){ System.out.println(arr[x]+"]"); }else { System.out.print(arr[x]+", "); } } } 不死神兔问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, * 假如兔子都不死,问第二十个月的兔子对数为多少? 1 1 2 3 5 ….. public staticvoid main(String[] args) { //定义数组 int[] arr = new int[20]; //初始化第一个月和第二个月的兔子对数c arr[0] = 1; arr[1] = 1; for(int x=2; x<arr.length;x++) { arr[x] = arr[x-2] + arr[x-1]; } System.out.println("第二十个月的时候的兔子对数是:"+arr[19]); } 数组反转问题public classTest7 { public static voidmain(String[] args) { // 定义一个长度为5的数组 int[] arr = new int[5]; // 通过键盘录入数据给数组中的元素赋值 Scanner sc = newScanner(System.in); for (int x = 0; x < arr.length;x++) { System.out.println("请给出第" + (x + 1) + "个元素"); arr[x] = sc.nextInt(); } System.out.println("反转前的数组元素:"); printArray(arr); // 定义方法将arr数组中的内容反转 reverse(arr); System.out.println("反转后的数组元素:"); //定义方法遍历数组 printArray(arr); } //遍历数组 public static voidprintArray(int[] arr) { System.out.print("["); for(int x=0;x<arr.length;x++){ if(x == arr.length-1) { System.out.println(arr[x]+"]"); }else { System.out.print(arr[x]+", "); } } } /* * 两个明确: 返回值类型:void 参数列表:int[] arr */ public static voidreverse(int[] arr) { for(int startIndex=0,endIndex=arr.length-1;startIndex<=endIndex;startIndex++,endIndex--){ int temp =arr[startIndex]; arr[startIndex] = arr[endIndex]; arr[endIndex] = temp; } }
|