Java开发:Java SE 基础知识篇

目录

一、数据类型扩展

二、变量作用域

三、常量

四、运算符

五、用户交互Scanner

六、循环结构

七、Java流程控制break、continue

八、方法重载

九、可变参数

 十、递归

扫描二维码关注公众号,回复: 15484796 查看本文章

递归结构包括两部分:

十一、面向对象(OOP)

十二、static关键字

十三、抽象类

十四、接口Interface

十五、内部类

十六、Error和Exception


一、数据类型扩展

A、整数扩展:进制  二进制以0b开头、十进制、八进制以0开头、十六进制以0x开头

int i = 10;//十进制
int i2 = 010;//八进制
int i3 = 0x10;//十六进制

B、浮点数扩展

float 的特点:有限、离散、舍入误差、大约值、接近但不等于

银行业务不使用float或者double,使用BigDecimal

float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//输入是false

//====================================

float d1 = 22313131313131f;
float d2 = d1+1;
System.out.println(d1==d2);//输出是true

C、字符串扩展

String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb);//返回false


String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//输入true

二、变量作用域

A、类变量

被static修饰的变量

B、实例变量

位于类中 且在 方法块之外的变量,从属于对象(如果不初始化 ,初始值会变成这个类型的默认值)

C、局部变量

方法块里的变量为局部变量 ,必须要初始化。

三、常量

初始化后不能再改变值,不会变的值。必须被final关键字修饰。

四、运算符

算数运算符:+、-、*、/、%、++、--

赋值运算符:=

关系运算符:>、<、>=、<=、==、!=、instanceof

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

以下了解即可

位运算符:&、|、^、~、>>、<<、>>>

A = 0011 1100

B = 0000 1101

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~B = 1111 0010

条件运算符:?:

扩展赋值运算符:+=、-=、*=、/=

五、用户交互Scanner

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据:");
        String s = scanner.nextLine();//可以输出一句完整的话,无论是否含有空格
        System.out.println("输出的内容为:" + s);
        scanner.close();
================================
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据:");
        String s = scanner.next();//如果含有空格,只可以输出空格前面的话
        System.out.println("输出的内容为:" + s);
        scanner.close();
================================
        Scanner scanner = new Scanner(System.in);
        double sum = 0;
        int m = 0;
        while (scanner.hasNextDouble()) {
            double nextDouble = scanner.nextDouble();
            m++;
            sum = sum + nextDouble;
            System.out.println("你输入了第" + m + "个数据,然后当前结果sum=" + sum);
        }

        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均值是" + (sum / m));
        scanner.close();

六、循环结构

A、while循环

只有满足条件才会执行循环体

B、do...while循环

至少会执行一次,如果满足条件会继续执行

C、for循环

循环体执行之前,循环次数就已经确定

快捷键:100.for

九九 乘法表

 for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
 }

 D、增强for循环

int[] numbers ={1,2,3,4,5};
for(int x : numbers){
System.out.println(x);
}

七、Java流程控制break、continue

A、break:用于跳出循环

B、continue:用于跳过某次循环

八、方法重载

重载就是在一个类中,有相同的函数名称,但形参不同的函数。

方法的重载规则:

*方法名称必须相同

*参数列表必须不同

*方法的返回类型可以相同也可以不同

*仅仅返回类型不同不足以成为方法的重载

九、可变参数

可变参数只能在最后一个参数的位置

public class Demo01 {
    public static void main(String[] args) {
        addNum(1,1,8,0,2,3,4,5,6,7);
    }

    private static void addNum(int a, int... b) {
        for (int i : b) {
            System.out.println(i);
        }
    }
}

 十、递归

自己调用自己

递归结构包括两部分:

  1. 递归结束的条件:什么时候不调用自身方法,如果没有头,将陷入死循环。
  2. 递归体:什么时候需要调用自身方法
示例:实现 n!
public class Demo01 {
    public static void main(String[] args) {
        Demo01 demo01 = new Demo01();
        System.out.println(demo01.f(3));
    }


    private int f(int num) {
        if (num == 1) {
            return 1;
        } else {
            return num * f(num - 1);
        }
    }
}

十一、面向对象(OOP)

三大特性:封装、继承、多态

 A、封装

应禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问(即属性私有,get/set)

封装的意义:

  1. 提高程序的安全性,保护数据
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 增加系统可维护性

B、继承

Super注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用构造方法

Super  VS  this

      代表的对象不同:
            this:本身调用者这个对象
            super:代表父类对象的应用
      前提:
            this:没有继承也可以使用
            super:只能在继承条件下才可以使用
      构造方法:
            this():本类的构造
            super():父类的构造

C、多态

定义:同一个方法可以根据发送对象的不同而采用多种不同的行为方式

多态是方法的多态,属性没有多态

方法不能重写的情况:static方法、final方法、private方法

多态存在的条件:

  1. 有继承关系
  2. 子类重写父类的方法
  3. 父类引用  指向子类对象

十二、static关键字

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println("===============");
        Student student2 = new Student();
    }
}
public class Student {
    {
        System.out.println("匿名代码块");
    }

    static {
        System.out.println("静态代码块");
    }

    public Student() {
        System.out.println("构造方法");
    }
}

执行顺序:
静态代码块
匿名代码块
构造方法
===============
匿名代码块
构造方法

十三、抽象类

A、抽象类不能被实例化,只能被继承

B、抽象类中可以写普通方法

C、抽象方法必须写在抽象类中

十四、接口Interface

接口中只有协议,没有具体实现。

public interface UserService{
//接口中定义的属性默认修饰符:public static final
int AGE = 99;
//接口中定义的方法默认修饰符:public abstract
void add();
}

十五、内部类

A、成员内部类

B、静态内部类

C、局部内部类

D、匿名内部类

new Person().eat();//其中new Person() 是没有名字的,所以叫做匿名内部类

十六、Error和Exception

Error一般是JVM抛出的,通常是灾难性的致命错误,是程序无法控制和处理的。(当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程。)

Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的处理这些异常。

#Exception

try、catch、finally、throw、throws

throw:用于方法块内部抛出异常
 public void test(int a, int b) {
        if (b == 0) {
            throw new ArithmeticException("b不能为0");//该异常为运行时异常,如果是编译时异常则必须向方法调用者抛出异常
        }
    }

throws:用于方法向外部抛出异常
 public void test(int a, int b) throws Exception {
        if (b == 0) {
            throw new Exception("b不能为0");//该异常不能内部自己捕获,则需要向方法调用者抛出异常
        }
    }

整理中......

猜你喜欢

转载自blog.csdn.net/android157/article/details/127825734