黑马程序员——编程基础二

------- android培训java培训、期待与您交流! ----------


1.运算符

   (1)算数运算符
+,-,*,/,%,++,--
+:加法,正数,字符串连接符。
   (2)赋值运算符
=,+=,-=,/=...
A:把左右两边的结果赋值给左边,左边是一个变量。s+=2;
B:隐藏了强制类型转换
  上个例题中编译通过的 s+=2;//s=(short)(s+1);
   (3)比较运算符
==,!=,>,>=,<,<=
运算结果是boolean类型。
   (4)逻辑运算符
&,|,^,!,&&,||

^:异或,同为假,异为真
常用的有:!,&&,||
   (5)位运算符
   (6)三元运算符
表达式?值1:值2
首先计算表达式的值,看其结果:
   true:值1
   false:值2
   (7)面试题:数据交换
int a = 10;
int b = 20;
开发用:使用第三方变量
   int temp = a;
   a = b;
   b = temp;
面试:位异或运算符
  左边:a,b,a
  右边:a^b
  a = a ^ b;
  b = a ^ b;
  c = a ^ b;
2.语句
   (1)顺序结构
从上往下执行。
   (2)选择结构
一:if结构
 a:第一种结构
if (条件表达式){
  语句体;
}
执行流程:
如果表达式为true,执行语句体;否则,不执行。
 b:第二种结构
if (条件表达式){
  语句体1;
} else{
  语句体2;
}
执行流程:
如果条件表达式为true,执行语句体1;
否则,执行语句体2;
     c:第三种结构:
if (条件表达式1){
  语句体1;
}else if(条件表达式2){
  语句体2;
}else if(条件表达式3){
  语句体3;
}
...
else {
  语句n;
}


执行流程:
从第一个条件表达式开始判断,遇到true,就执行对应的语句体。
如果都没有,最终执行语句n。


注意事项:
 A:任何if语句,本身代表的是一条语句
 B:if语句控制的语句体,可以不写{}
   但是,如果if语句要控制多条语句,必须加{}
   推荐:永远加{}
 C:结果肯定是boolean类型。
 D:注意,下面两个东西,一般不同时使用 ;和{}

  二:switch结构
    格式:
switch(表达式) {
       case 值1:
语句1;
break;
case 值2:
语句2;
break;
case 值3:
语句3;
break;
...
default:
语句n;
break;
}

执行流程:
首先计算表达式的值。
接着依次和case进行比较,遇到想等,就执行对应的语句,并结束。
如果没有匹配的,执行default。

注意事项:
a:表达式的取值一般来说是这几个:byte,short,int,char
 JDK5以后可以是枚举
 JDK7以后可以是字符串
b:case和default有没有顺序?
 有:执行顺序关系。没有:位置关系。
c:break是否可以不要
 最后一个匹配的break可以直接不要。
d:switch语句的结束:
 一是 遇到break或是 执行到最后。
案例:
/*
一年12月,4个季度
3\4\5   春季
6\7\8   夏季
9\10\11 秋季
12\1\2  冬季
        给一个月份得到对应的季节
*/
        class SwitchTest {
   public static void main(String[] args) {
//输入一个月份
int month = 5;
//使用switch语句
switch (month) {
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("不是有效月份");
}
}
}
13.循环语句
   (1)for循环:
for(初始化条件表达式;判断条件表达式;增量条件表达式){
循环体;
}
执行流程:
A:首先执行初始化条件表达式
B:接着执行判断条件表达式,根据返回值
true:就结束
false:就结束
C:执行循环体
D:执行增量条件表达式,回到B继续。
(2)while循环:
while(条件表达式){
循环体;
}

while和for可以等价转换。
扩展格式:
初始化条件表达式;
while(判断条件表达式){
循环体;
增量条件表达式;
}
(3)do...while循环:
do{
循环体;
}while(条件判断);
(4)各个循环的区别?
第三中格式至少执行一次循环体。
(5)使用哪种循环?
循环变量完毕后不需要使用,用for。
循环变量完毕后还要使用,用while。
14.其他语句
(1)continue和break一般控制循环的走向。
(2)区别:
continue:结束本次循环,继续下一次循环。
break:结束当前循环。
15.函数(方法)
(1)完成特定功能的代码块。
(2)格式:
修饰符  返回值类型  函数名(形式参数 变量1, 形式参数 变量2...){
方法体;
return 返回值;
}
A:修饰符
public static
B:返回值类型
结果的数据类型。
C:方法名
方便调用
D:参数
形式参数:接收实际参数的变量
实际参数:实际参与运算的变量
E:方法体
就是按照正常的逻辑完成功能的代码。
F:return
方法的结果需要带回来。
用于结束方法。(void类型的方法,内部也有一个return;)
G:返回值
就是结果。
(3)案例:
A:求两个int类型的数据之和。
public static int Sum(int a, int b){
return a + b;
}
B:比较两个int类型的数据是否相等。
public static boolean Compare(int a, int b){
if (a==b){
return true;
}
}
C:获取三个int类型数据中的最大值。
public static int getMax(int a, int b, int c){
int max;
int result = (a>b)? a : b;
int result2 = (result > c) ? result : c;
return result2;
}
(4)注意:
A:函数只有被调用才执行。
B:函数之间是平级关系。
(5)函数的调用:
A:void类型
单独调用。
B:非void类型
单独调用,没有意义。
输出调用,可能不好。
赋值调用,推荐方案。
(6)函数重载:
函数名相同,参数列表不同(个数和类型)
与返回值无关。
16.数组
(1)存储同一种数据类型的多个元素类型的容器。
(2)特点:每一个元素都有编号,从0开始。
(3)格式:
A:int[] arr = new int[3];
B:int[] arr = new int[]{1,2,3};
C:int[] arr = {1,2,3};
 System.out.println(arr.length);
 System.out.println(arr[0]);
(4)操作:
A:遍历
public static void printArray(int[] arr){
for(int x=0; x<arr.length; x++){
System.out.println(arr[x]);
}
}
B:获取最值
public static int getMax(int[] arr){
int max = arr[0];
for(int x=1; x<arr.length; x++){
if(arr[x]>max){
max = arr[x];
}
}
return max;
}
C:排序
选择排序:
从0索引位置,依次和后面的元素进行比较。
第一次结束后,最小值出现在了0索引位置。

public static void selectSort(int[] arr){
for(int x=0; x<arr.length-1; x++){
for(int y=x+1; y<arr.length; y++){
if(arr[y]>arr[x]){
int temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
}
}
}

冒泡排序:
相邻元素两两比较,大的后放。

public static void selectSort(int[] arr) {
for(int x=0; x<arr.length-1; x++) {
for(int y=0; y<arr.length-1-x; y++) {
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1]= temp;
}
}
}
}
D:查找
a:普通查找
针对数组没有顺序的情况。
public static int getIndex(int[] arr, int value){
int index = -1;
for(int x=0; x<arr.length; x++){
if(value==arr[x]){
index = x;
break;
}
}
return index;
}
b:二分查找
前提:数组必须有序。
public static int getIndex(int[] arr, int value){
int min = 0;
int max = arr.length - 1;
int mid = (min+max) / 2;
while(arr[mid]!=value){
if(value>arr[mid]){
min = mid + 1;
}else if{
max = mid - 1;
}
if(max<min){
return -1;
}
mid = (min+max) / 2;
}
return mid;
}
E:Arrays工具类。
17:二维数组
(1)任何数组都看成一维数组。
(2)二维数组定义:
A:int[][] arr = new int[2][3];
B:int[][] arr = new int[2][];
C:int[][] arr = {{1,2,3},{3,4,5},{6,7,9}};
(3)二维数组的遍历:
for(int x=0; x<arr.length; x++) {
for(int y=0; y<arr[x].length;y++){      //注意是arr[1]里是1,2,3,也就是里面括号里的元素,判断他的长度
System.out.print(arr[x][y]+" ")
}
System.out.println();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值