皮卡丘的皮JavaSE0714---运算符续将、循环、方法调用、数组初讲

Javase 0714

IDEA

运算符续讲

逻辑运算符: 运算结果是布尔类型
    (1):& 并且   只有左右两端同事为true,则最终结果为true;以下为例:
           int a=20int b=10boolean f=a==b&a>b;
           System.out.println(f);
    (2):| 或者   运算结果任意一段为true,则最终结果为true//变量.sout  快速输出这个变量
    (3):! 取反   
    (4):^ 异或   相同为false,不同为true(5):短路与   短路或  他们在运算结果上没有区别,只是在运算效率有区别 举例:
            int a=2;
            int b=1;
            boolean f=a>b&&b>0;
            System.out.println(f);
         但同时,&& 运算时左边的为false时,右边就不运算了,当左边为true时,右边的表达式就不运算了。
                || 运算时,当左边为true时,右边就运算了。
位运算符:直接对二进制补码进行运算   & |  ^  ~(按位取反) 左移  右移 无符号左右移
            System.out.println(3&4)   &:有00   0
            System.out.println(3|4)   |:有11   7
            System.out.println(3^4)   ^:相同则0,不同则1   7
            System.out.println(~3)                      -4
            3<<2                                 12
            3>>2                        正数补0负数补1 
            数左移相当于数乘2的几次方
            数右移相当于除以2的几次方      左右移运算效率高
        值交换:
         (1):通过中间变量交换int t=a;
                                a=b;
                                b=t;
         (2):利用^异或特点   一个数异或两次值不变
                                a=a^b;
                                b=a^b;   //a^b^b=a
                                a=a^b;   //a^b^a=b
         (3):a=a+b;  b=a-b; a=a-b;
         (4):a=(a+b)-(b=a);
三元运算符:当表达式的结果为true是,返回结果1 false时,返回结果2
          格式:?结果1:结果2:例:a>b?a:b;

语句

顺序结构:写在前面先执行,写在后面后执行
选择结构:代码执行具体逻辑要进行判断
        分类:if语句   switch语句
        if 语句: if(){}以及多重条件选择
        三元表达式能写出来的,if语句能写出来,
        if语句能写出来的,三元表达式不一定能写出来
        switch 语句:switch(num){
                    case 10:
                    break;
                    case 20:
                    break;
                    default:
                    break;
        }
       a.支持的数据类型包括: byte short int char String  枚举 
       b.case后面带匹配的值一定是常量不能是变量 
       c.多个case值不能有相同的
       d.中断 可以不写,可能发生case穿透现象,可以利用,但default 可以不启用
switchif语句的比较
        switc针对有限个常量进行选择,不能进行范围选择     
        if 能对常量选择也能对范围进行选择

语句循环

在Java中,对于重复的语句要使用循环来做
   for(int i=0;i<10;i++){}     //从0开始循环,循环条件为true时,循环继续,i++控制循环语句
执行流程如下:
    a:执行初始化表达式语句
	b:执行判断条件语句,看其返回值是true还是false
		如果是true,就继续执行
		如果是false,就结束循环
	c:执行循环体语句;
	d:执行控制条件语句
	e:回到B继续。
	同时,注意初始化语句只执行一次。
	举例说明,用 for 语句输出一千以内的水仙花数
	
while 格式:
初始化条件语句;
	    while(判断条件语句) {
			 循环体语句;
			 控制条件语句;
	   }
执行流程如下:
    a:执行初始化条件语句;
	b:执行判断条件语句,看其返回值是true还是false
		如果是true,就继续执行
		如果是false,就结束循环
	c:执行循环体语句;
	d:执行控制条件语句
	e:回到b继续。
	
do  while 格式: 初始化条件语句;
		do {
			循环体语句;
			控制条件语句;
		}while(判断条件语句);
执行流程如下:
    a:执行初始化条件语句;
	b:执行循环体语句;
	c:执行控制条件语句;
	d:执行判断条件语句,看其返回值是true还是false
		如果是true,就继续执行
		如果是false,就结束循环
	e:回到b继续。
    先执行一次循环体,然后再判断循环条件
    
两者的区别:如果事先知道循环次数用 for 循环,如果不知道循环次数但知道循环结束的条件可以用 while 循环 

死循环:循环没有结束条件   for(;;){sout}
                       while(true){sout}

循环的嵌套: 常见快捷键:10.fori  10.ofrr 
举例说明循环嵌套:4、请编写程序,打印出如下图形,并在main方法中调用
1
12
123
1234
12345
代码如下:public static void main(String[] args) {
                num();
         }
          public static void num() {
          for (int i = 1; i < 6; i++) {
          for (int j = 1; j <=i; j++) {
                System.out.print(j);
                  }
        System.out.println();
                  }
         }

值得注意的是:如果有多层循环嵌套,可以直接给循环命名,在内层结束外层循环。例如  wc.for  和   nc.for   break.wc

控制跳转语句: 为了弥补在循环执行过程中无法中断一缺陷,Java中提供了 breakcontinuereturn来实现控制语句的跳转和中断。
    分类: break 中断,在 switch 和循环汇总使用
                     主要作用为退出单层循环
           continue 跳过这一次循环,执行下一步操作
           return  跳转到上层方法,在方法中如需要返回主方法调用时,需要返回一个值用
                   

方法

方法:为了解决代码重复编写的问题,也就是完成特定功能的代码块 (在C中称之为函数)
方法的格式:修饰符  返回值类型  方法名(参数类型 参数名1,参数类型 参数名2){
           方法体;
           return 返回值;
           }
方法的格式说明:
    (a): 修饰符  比较多,后面会详细介绍。目前使用  public static
	(b): 返回值类型 		用于限定返回值的数据类型
	(c): 方法名  就是一个名称,它的存在是为了方便我们调用方法
	(d): 参数类型 限定调用方法时传入参数的数据类型
	(e): 参数名   是一个变量,接收调用方法时传入的参数 这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
	(f): 方法体   完成功能的代码
	(g): return  结束方法以及返回方法指定类型的值 
	(h): 返回值   就是功能的结果,由return带回,带回给调用者
举例说明:用方法求三个数之和
 public static void main(String[] args) {
    add(20, 30, 40);
}

 public static int add(int x, int y, int z) {
    int sum = x + y + z;
    System.out.println(sum);
    return (sum);
}
注意:如果需要在主方法中调用方法的返回值,是需要明确功能结果的参数类型。
      一般的,我们会进行赋值调用和输出调用
方法的调用使用注意事项:
	a.方法不调用不执行
    b.方法与方法是平级关系,不能嵌套定义
    c.方法定义的时候参数之间用逗号隔开
    d.如果方法有明确的返回值,一定要由return带回一个值,不用会报错!
再举一例:请编写一个方法,求出1-n之间的偶数和与奇数和的差值,并在main方法中调用
    public static void main(String[] args) {
      num();
      }

    public static void num() {
    for (int i = 1; i < 6; i++) {
        for (int j = 1; j <=i; j++) {
                System.out.print(j);
        }
        System.out.println();
    }
}

方法重载:允许一个类中可以定义多个同名方法,只要他们的参数个数或参数类型不同即可。调用时会自动匹配

数组

数组:输组可以看做一个容器,可以用来存储多个同一种数据类型的数据
数组定义格式:
     int[]a;  或者 int a[];习惯上使用第一个
注意:数组必须先初始化,才能使用。即在内存中为数组开辟空间,并为数组的元素赋值

初始化:静态初始化和动态初始化
      动态:由我们指定的数组长度
      int [] arr=new int [5];
      静态:由我们赋值,由系统计算长度
      int []arr=new int[]{20,30,40,50};
注意:数组的初始化 动态静态二选一
      静态数组的简写 double []arr3={3.13,3.13,3.25};
      数组可以通过length获得长度:int len=arr.length;
数组在JVM中的实际应用:
   在JVM执行程序的过程中会把管理的内存分为以下几个部分:
a.栈:存放局部变量
      局部变量:方法定义中或声明中的变量称为局部变量个,形参。
b.堆:存放所有初始化出来的东西
     特点:会随机分配一个地址给栈
          每个变量根据类型不同会有不同的默认值
          举例:  byte short int long    0
                 float  boolean         0.0
                 char          '\u0000' 即空格
                 boolean               false
           使用完毕会等待被GC回收机处理
c.方法区
d.本地方法区
e.寄存器
以下举例:数组内部元素调换位置:
 public static void reverseArr(int[] arr){
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
        }
    }
数组中容易出现的问题:
     (1):数组角标越界异常:数组的长度是固定的,定义好就固定了
     (2):空指针异常:人为置空,加快回收;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值