黑马程序员--基础整理02
来源:互联网 发布:python for quants 编辑:程序博客网 时间:2024/05/18 00:39
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
注:视频来源,毕向东老师的 JAVASE 基础视频。
语句
1.判断结构——if语句
三种格式:if;if else ; if elseif else。
if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以简化if else代码。
c,条件表达式无论写成什么样子,最终的结果不是true就是 false。
package fuxi;/** * 需求:根据用户指定月份,打印该月份所属季节。 *@author XiaLei */public class Day2Test1 { public static void main(String[] args) { int month = 4; if(month>=1 && month<4){ System.out.println("春季"); }else if(month>=4 && month<7){ System.out.println("夏季"); }else if(month>=7 && month<10){ System.out.println("秋季"); }else if(month>=10 && month<13){ System.out.println("冬季"); }else{ System.out.println("输入月份有误,程序结束。"); } }}
2.选择结构——switch语句
switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int, char。
(注意:升级版后又添加了枚举和字符串类型)
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:1、遇到break结束;2、执行到switch结尾结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
if和switch语句很像。如果判断的具体数值不多,而且符合byte short int char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
package fuxi;/** * *@author XiaLei */public class Day2Test { public static void main(String[] args) { int x=3; switch (x){ //swith在判断byte short int char 时效率较高,无法判断boolean型。 //case取值 //case 1: //执行语句 //break; //case 2: //执行语句 //break; //default: //执行语句 //break; case 2: System.out.println("haha"); break; case 12: System.out.println("yes"); break; default: System.out.println("nono"); } }}
package fuxi;/** * 需求:根据用户指定月份,打印该月份所属季节。 *@author XiaLei */public class Day2Test1 { public static void main(String[] args) { int x = 50; switch(x){ case 1: case 2: case 3: System.out.println("春季"); break; case 4: case 5: case 6: System.out.println("夏季"); break; case 7: case 8: case 9: System.out.println("秋季"); break; case 10: case 11: case 12: System.out.println("冬季"); break; default: System.out.println("error"); break; } }}
3.循环结构——while,do while,for语句
while练习
package fuxi;/** * while语句格式: * while(条件表达式){ * 满足条件则无限循环。 * } * * do while语句格式: * do{ * 执行语句。 * }while(条件表达式); * * for(){ * * } *@author XiaLei */public class Day3Test1 { public static void main(String[] args) { //求1加到100的和 int x = 0; int sum = 0; while(x<=100){ sum+=x; x++; } System.out.println(sum); }}
打印结果:
5050
dowhile练习
package fuxi;/** * *@author XiaLei */public class Day3Test2 { public static void main(String[] args) { //do while 先执行循环体,再判断 int x = 0; do{ System.out.println("x="+x++); } while(x<3); }}
打印结果:
x=0
x=1
x=2
for练习
package fuxi;/** * *@author XiaLei */public class day3Test { public static void main(String[] args) { // 打印1-10的和; int n = 0; for (int x=1; x<11;x++){ n+=x; } System.out.println(n); // 获取1-100之间7的倍数的个数。 int m = 0; for (int x = 1; x<101; x++){ if (x%7==0) m++; } System.out.println(m); //打印九九乘法表。 for (int x = 1; x<10;x++){ //尖朝上,改变条件; //尖朝下,改变初始化值。 for(int y=1;y<=x;y++){ System.out.print(x+"x"+y+"="+x*y+"\t");//制表符 } System.out.println(""); } //打印*型金字塔。 for (int x = 1;x<6;x++){ //外循环控制行数,内循环控制列数。 for (int y = x;y<5;y++){ System.out.print(" "); } for (int z = 0;z<x;z++){ System.out.print("* "); } System.out.println(""); } }}
打印结果:
55
14
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
注意:1.最简单无限循环格式:while(true){}, for(;;){}。
2.while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
4.其他流程控制语句——break,continue
break(跳出)语句:应用范围:选择结构和循环结构。
continue(继续)语句:应用于循环结构。
注意:
a,这两个语句离开应用范围,存在是没有意义的。
b,这个两个语句单独存在时,下面都不可以有语句,因为执行不到。
c,continue语句是结束本次循环继续下次循环。
d,标号的出现,可以让这两个语句作用于指定的范围。只能用于循环结构。
函数
定义:定义在类中的具有特定功能的一段独立小程序。也称方法。
总结:
1. 定义函数可以将功能代码进行封装,便于对该功能进行复用。
2.函数只有被调用才会被执行。
3.函数的出现提高了代码的复用性。
4.对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。
注意:
函数的重载只要参数个数或参数类型不同即可,与返回值类型无关。
数组
概念:
同一种类型数据的集合。简单的来说就是一容器,用来装东西的。
使用数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
练习1——求数组最大值,选择排序及冒泡排序。
package fuxi;/** * 堆栈使用 : * 栈内存:变量的数据在方法体里面使用完毕,会自动释放 。 * 堆内存:使用java的垃圾回收机制, 非手动操作,也不能马上回收。 * 堆内存中的值都有默认初始化值。 *@author XiaLei */public class day4Test1 { public static void main(String[] args) {// int[] arr = new int[3];// System.out.println(arr[2]);//默认初始化值为0; //给定数组{5,1,4,6,2,8,9},获取最值。 int[] arr = {5,1,4,6,2,8,9}; printArray(arr); int max=5,min=5; for (int x = 1;x<arr.length;x++){ if (min>arr[x]){ min = arr[x]; } } for (int x = 1;x<arr.length;x++){ if (max < arr[x]){ max = arr[x]; } } System.out.println("最大值="+max+" 最小值="+min); //选择排序。// for (int x = 0;x<arr.length-1;x++){// // for (int y = x+1;y<arr.length;y++){// // if (arr[x]>arr[y]){ //换位操作// int temp = arr[y];// arr[y] = arr[x];// arr[x] = temp;// }// }// }// printArray(arr); //冒泡排序。相对于选择排序,冒泡排序由于调用堆内存较少,效率较高。 for (int x = 0;x<arr.length-1;x++){ for (int y = 0;y<arr.length-x-1;y++){ if (arr[y]>arr[y+1]){ int temp = arr[y]; arr[y] = arr[y+1]; arr[y+1] = temp; } } } printArray(arr); } public static void printArray(int[] arr){//打印数组 System.out.print("["); for (int x = 0;x<arr.length;x++){ if (x!=arr.length-1) System.out.print(arr[x]+","); else System.out.println(arr[x]+"]"); } }}
打印结果:
[5,1,4,6,2,8,9]
最大值=9 最小值=1
[1,2,4,5,6,8,9]
练习2——数组的折半查找
package fuxi;/** * *@author XiaLei */public class day4Test2 { public static void main(String[] args) { int[] arr = {1,3,4,5,6,9}; System.out.println(halfSearch_2(arr,5)); } public static int halfSearch_1(int[] arr,int key){ //折半查找方法1 。 必须保证该数组是有序的数组 //key为对比的数值 int max=arr.length-1,min=0,mid=(max+min)/2; while(arr[mid]!=key){ if(arr[mid]>key) max=mid-1; else if(arr[mid]<key) min=mid+1; if(min>max) return -1; mid=(max+min)/2; } return mid; } public static int halfSearch_2(int[] arr,int key){ //折半查找方法2,相较于1要简单,这里注意else if的使用,如果没有else if则第一个条件没满足直接跳到else执行。 int max=arr.length-1,min=0,mid; while(min<=max){ mid=(max+min)>>1; if(arr[mid]>key) max=mid-1; else if(arr[mid]<key) min=mid+1; else return mid; } return -1;//这里如果返回 min则可以实现知道插入元素位置的功能。 }}
打印结果:
3
练习3——查表法定义进制通解
package fuxi;/** * *@author XiaLei */public class day4Test3 { public static void main(String[] args) { toHex(60); trans(60,15,4); trans(6,1,1); trans(9,7,3); } public static void toHex(int x){ //自定义一个字符数组 char[] arr = {'0','1','2','3','4','5','6','7', '8','9','a','b','c','d','e','f'}; char[] ch= new char[8]; int pos = ch.length; while(x!=0){ int temp = x&15; ch[--pos] = arr[temp]; x=x>>>4; } System.out.println("pos="+pos); for (int y=pos;y<ch.length;y++){ System.out.print(ch[y]+","); } } public static void trans(int num,int base,int offset){//进制转换通法。 char[] arr = {'0','1','2','3','4','5','6','7', '8','9','a','b','c','d','e','f'}; //定义一个临时容器 char[] ch= new char[8]; //定义一个操作数组的指针 int pos = ch.length; //利用与低位最大值的方式取出低位,存到临时数组中 while(num!=0){ int temp = num&base;//base为基数 ch[--pos] = arr[temp]; num=num>>>offset;//offset为右移位数 } for (int x=pos;x<ch.length;x++){ System.out.print(ch[x]+","); } }}
二维数组的概念:
int[][] arr = new int[3][2];
表示有3个一维数组,每个一维数组中有2个元素。
给第一个一维数组1角标赋值66的操作:arr[0][1] = 66;
- 黑马程序员--基础整理02
- 黑马程序员--基础整理01
- 黑马程序员 java基础要点整理
- 黑马程序员----【javaSE基础】总结整理--泛型
- 黑马程序员_JAVA基础常识整理
- 黑马程序员--Java基础常见异常整理
- 黑马程序员--Java基础面试题整理
- 黑马程序员--- 笔记整理(java基础七-----问题整理)
- 黑马程序员---------笔记整理(java基础六-----异常)
- 黑马程序员---------笔记整理(java基础八-----多线程)
- 黑马程序员-----笔记整理(java基础十----集合)
- 黑马程序员----【javaSE基础】个人整理--static总结
- 黑马程序员_类的基础常识整理
- 黑马程序员_继承的基础常识整理
- 黑马程序员_接口的基础常识整理
- 黑马程序员_我的Linux基础整理笔记
- 黑马程序员--C语言基础-字符串相关知识点整理
- 黑马程序员——Java基础-整理笔记
- OC 术语表
- 学习笔记:c语言中词法陷阱
- java设计模式学习之观察者模式(二)
- Unity5.1 新的网络引擎UNET(十五) Networking 引用--下
- Apache Thrift设计概要
- 黑马程序员--基础整理02
- Android apk AndroidManifest.xml 解密
- Xutils框架
- 编程中最没用的东西是源代码,最有用的东西是算法和数据结构。
- php实现排序算法(一) 冒泡排序 快速排序
- gdb调试工具的使用
- axure RP
- Shader toy (顺手写两个Gyro)(纯代码写3D)
- PlayerPrefs学习