Java学习第二天集合 (其实已经学习了四天了,但是懒,摆烂,没有上传)

第二天:

一.运算符划分为 7种,

1.算术运算符:+ - * / % ++ --

 赋值运算符:+= -= *= /= =

 比较(关系)运算符: == != > < >= <= 得出的结果都是: boolean类型,true或fasle

 逻辑运算符: & | ^ ! && ||

 位移运算符: << >> >>>

 位运算符: & | ^

 三目运算: boolean类型表达式 ? 结果1 : 结果2

2.其中 位运算符 和 位移运算符 是与二进制的运算有关:

 位运算符 和二进制的计算相关: 0 和 1

 &: 0 和 1 与上 都是 0

 |: 0 和 1 或上 都是 1

 ^: 相同为0,不同为1

3.位移运算符: << >> >>>

<<: 左移,相当于 ×2;

>>: 右移,相当于 ÷2,如果是负数按照符号位本身填入;

>>>: 无符号右移,相当于 ÷2,如果是负数, 则永远补0,得到的永远都是一个正大数;

public class Demo04 {
    public static void main(String[] args) {
        System.out.println(2 << 1);//4  2 * 2
        System.out.println(2 >> 1);//1  2 / 2
        System.out.println(2 >>> 1);//1 2 / 2

        System.out.println(-2 << 1);//-4
        //右移
        System.out.println(-2 >> 1);//-1
        //无符号右移
        System.out.println(-2 >>> 1);//2147483647
    }
}

4.逻辑运算符中有两个特别需要注意一点的:

& /&& 两者存在区别:: 一假既假

&: 无论如何,都会将整个表示执行完成

&&:只要遇到false,则停止判断,称之为短路操作

|、||: 一真既真

| : 无论如何,都会将整个表示执行完成

||:只要遇到true,则停止判断,称之为短路操作

所以,一遇见|| && 成立,则后面的运算就不进行了

 

public class Demo02 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //短路操作 && 一假既假  || 一真既真
        System.out.println(a > b & a++ > b++);//false
        System.out.println(a);  // a = 11;
        System.out.println(b);  // b = 11;
        System.out.println(a > b && a++ > b++);//false
        System.out.println(a);  // a = 10;
        System.out.println(b);  // b = 10;


    }
}

二 . 逻辑控制语句

1.顺序结构

2.分支语句: if(条件)

                    if - else

                   if- else if - else

              switch(要判断的值)-case:
                 语法结构:
                    switch(要判断的值){
                          case:
                               break;
                          case:
                               break;
                          case:
                               break;
                   }

  注意:
      要判断的值取值类型:
          byte、short、char、int、String、枚举
      case中需要注意:
          a.case后面根的值是要比较的值,只能是常量不能使变量.
          b.因为case具有穿透性,需要使用break结束.

         如果只是想跳过这次语句,则可以使用continue;

3.循环结构:

1)for循环 for(int i = 0; i < 10; i++){}

for(①初始化值;②判断是否进入循环的条件;③步长){

                ④符合循环条件后,执行的内容(循环体)

}

 执行顺序: ①②④③ > ②④③ > 直到②不符合

注意:

判断是否进入循环的条件是可以跟初始化值没有任何关系 有次数,有规律可循,会使用for循环

2)while循环 语法结构: ①初始化值;

while(②判断是否进入循环的条件){

④符合循环条件后,执行的内容(循环体)

③步长

}

执行顺序:

            ①②④③ > ②④③ > 直到2不满足..

特点:不知道次数,没有规律可循

3)do-while循环   语法结构:

        ①初始化值;

   do{

      ④符合循环条件后,执行的内容(循环体)

       ③步长

      }while(②判断是否进入循环的条件);

执行顺序:①④③② > ②④③ > 直到②不满足

4)三种循环结构中:

先判断后执行: for、while

知道次数,有规律可循则选择for循环

不知道次数,没有有规律可循则选择while循环

先执行后判断:do-while

5)跳转控制语句

a.continue:跳过本次循环,继续下一次循环

b.break:结束循环

return:结束循环(不属于跳转控制语句) 

第三天

一.数组:

1.数组的概念

a. 存储具有固定长度数据的容器,保证多个数据类型必须一致.

    固定长度:数组一旦创建,则长度就不可改变

    数据类型:必须保证是相同类型

b. 简单理解: 批量定义变量

变量 : 声明 + 初始化

2)数组的初始化

(1)静态初始化

a.方式一 语法结构 数据类型[] 数组名 = {元素1,元素2,元素3,...};

特点: 固定写法,只能在声明的同时初始化

b.方式二 语法结构 数据类型[] 数组名 = new int[]{元素1,元素2,元素3,...};

特点: 可以再次赋值

静态赋值共同特点: 在数组创建时就已经确定了数组的长度 和 数组的元素

(2)动态初始化

语法结构: 数据类型[] 数组名 = new int[数组长度];

特点: 数组再定义时只初始化了数组的长度,但没有初始化数组元素

 

数组元素有默认值,都是0,但是0的表现形式不一样

整数类型 -> 0

浮点类型 -> 0.0

字符类型 -> '\u0000' Unicode字符集

布尔类型 -> false

引用数据类型 String[]

3.访问数组元素

           语法格式: 数组名[下标]

           下标范围: 0 ~ length - 1

4.数组的属性(length)

   数组的长度 = 数组的元素个数

5.数组的遍历/迭代

   挨个获取数组中的元素称之为数组的遍历/迭代

6.常见异常

  ArrayIndexOutOfBoundsException:数组下标越界

  NullPointerException:空指针异常

7.数组扩容/缩容

数组的复制:

Arrays.copyOf();

System.arrayCopy();

8.数组的反转

  概念: 数组中的元素颠倒顺序.

 

9.数组内存管理

1)内存

  内存是计算机中重要组成部分,是一个临时存储区域,

  当程序启动着,会开辟一块内存空间,用于存储程序中的数据.

2)JVM虚拟机内存分区

  方法区:加载类相关的信息

  栈:局部变量 / 临时变量

  堆:数组,对象

  寄存器:给CPU使用,和开发无关

第四天

、方法(函数)

1.方法的概念

  方法(method)是将具有独立功能的代码块组织成为一个成体,让他具有特殊功能的代码集.

2.方法的语法结构

  访问修饰词 + 修饰词 + 返回值类型 + 方法名 + 参数(数据类型 + 变量名)

//主方法 public static void main(String[] args)

3.方法的作用: 提高代码的复用性

4.方法的定义和使用

 1)方法的使用

   a.定义方法

   b.调用方法 - 方法名()直接调用

   注意:先定义后调用,否则会报错

2)方法的定义 

  (1)无参方法

  (2)有参方法 参数:数据类型 + 变量名

   数据类型:

     a.基本数据类型

     b.引用数据类型:数组 / 类 / 接口

     c.可变长参数

  public static void m2(int a,String... str){
        System.out.println(str);
    }

语法: 类型...

注意: 可变,参数在传递过程中可以是0 ~ n个参数 使用时,可变长参数后不能追加别的参数 (所以前面是可以加参数的)

  (3)带返回值的方法

     返回值类型:

    基本数据类型:

    引用数据类型:数组 / 类 / 接口

    void:没有返回值

   注意:  return 的值 和 返回值类型必须保持一致,否则编译报错

5.方法定义的格式 修饰词: public static

                            返回值类型: void/基本/引用

                            方法名:自定义,但可读性要好,必须遵循小驼峰命名法 方法参数:基本/引用/可变

长参数

                          方法体:做逻辑判断

6.方法定义需要注意:

  1)参数列表如何定义: 当有不确定因数时会当做方法参数传递

  2)返回值类型如何定义:考虑在调用时 是否需要使用这个值.

7.方法重载

1)概念 在同一个类中,相同的方法名,方法参数不一致可以造成方法的重载

   a.前提:必须在同一个类中

   b.参数不一致: 顺序不一致、 个数不一致、 类型不一致

   c.方法重载和返回值无关

public class Demo01 {
    public static void main(String[] args) {

    }
    //1.个数不一致
    public static void sum(byte b1){}
    public static void sum(){}
    //2.类型不一致
    public static void m2(short b1){}
    public static void m2(int b1){}
    //3.顺序不一样
    public static void m1(int a, byte b){}
    public static void m1(byte b, int a){}
    //4.重载和返回值无关
    /*public static void m3(int i){

    }
    public static int m3(int i){
        return 0;
    }*/

}

8.方法的参数传递

  1)方法参数传递基本数据类型 特点:传递值,参数的改变,不影响实际参数

 

  2)方法参数传递引用数据类型 特点:传递地址值,参数的改变,会影响实际参数

 

二、递归

三、数组排序 冒泡排序、选择排序、快速排序、插入排序、希尔排序、桶排序。。。

冒泡排序: 原理:每一轮比较相邻的两个元素,小的放前面,大的放后面

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值