java基础

java基础

浮点数据类型

浮点数据类型float,double不精确,最好不要使用浮点数进行比较,

而是使用java的类BigDecimal(银行业务一般使用)

浮点型float在后面需要加F

long类型在后面要加L

类型转换

高转低需要强制转换,如:

int a = 5;
byte b = (byte)a;

低转高不需要

两个不同类型数作运算,低容量会自动转换为高容量类型

变量类型

局部变量

在方法内,必须初始化

实例变量

在类中,方法外(不加static),如果不初始化,那么为默认值,如:0,null

布尔值默认为false

实例变量的调用:类名.变量名

类变量

加关键字static

直接调用

常量

加关键字final

static final double PI = 3.14;
final static double PI = 3.14;
final int a = 3;

快捷键

ctrl + d;复制当前行到下一行

位运算

位运算速度极快

异或 ^:

相同为0,不同为1

左移 <<:

*2

//计算2*8
2<<3	//左移一次乘以2,最终为16

右移 >>:

/2

字符串连接符

int a = 5;
int b = 6;
System.out.println(""+a+b);//结果为56
System.out.println(a+b+"");//结果为11
//两者结果不一样,""会将其之后的变量转换为字符串类型,在其之前的不变

javadoc命令

用于生成帮助文档
在这里插入图片描述

接收输入

import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.println("输入:");
String str = scanner.nextLine();
System.out.println("输出为:"+str);
scanner.close();
//hasNext()和hasNextLine()用来判断是否有输入

在这里插入图片描述

Switch

java SE 7开始

Switch支持字符串类型(表达式->value)

switch(expretion){
    case value1:
        break;
    case value2:
        break;
    default:
        System.out.println();
}
//value必须是常量,不写break,会将后面的所有代码顺序执行

增强型FOR循环

int [] numbers={1,2,3,4,5};
for (int x:numbers){//每一次将number数组里的一个元素赋值给x
    System.out.println(x);
}

数组工具类

Arrays,包含很多数组元素的操作,如:排序,找最大,最小值等

需import java.util.Arrays;

面向对象

本质:以类的方式组织代码,以对象的方式封装数据

面向对象最终还是会执行面向过程

静态方法

不需要实例化即可调用

有static修饰,同个包下其他模块可以直接调用,如Student.func()

静态方法是同类一起生成的,实例化方法(没有static修饰的方法)是在类实例化之后才生成

一个类中,

  1. 静态方法之间可以相互调用
  2. 非静态方法可以相互调用
  3. 静态方法里面不能直接调用非静态方法,因为两者加载时间不同

非静态方法

没有static修饰,需要new实例化类才能调用其中方法,如:

Student stu = new Student();
stu.func()

或者:

new Student().func();

三大特性

  • 封装

    重点用于属性,方法中用的比较少

    public class Student{
        private String name;
        private int age;
        public char sex;
    }
    
  • 继承

    extends关键字

    public class Student extends Person{
        
    }
    

    继承之后子类可以使用所有父类的公有属性和公有方法,私有属性或私有方法只能通过父类的

    get/set或类似的公有方法间接使用

    另外私有属性其实可以用super.xxx调用,本质就是私有属性直接调用的话只能读不能写

    方法被调用只会是写,所以私有方法是不能直接被调用,即使是使用super.xxx()调用

  • 多态

值传递和引用传递

值传递

并未改变对象

在这里插入图片描述

引用传递

改变的是对象

在这里插入图片描述

异常

在这里插入图片描述

在这里插入图片描述

catch,try,throw,throws,finally

在这里插入图片描述

多层捕获,大范围的异常在下面

在这里插入图片描述

主动抛出异常,throw throws(用在方法上)

在这里插入图片描述

在这里插入图片描述

异常主要可以使程序继续运行

有参构造无参构造

  1. 和类名相同
  2. 没有返回值

在这里插入图片描述

可以使用快捷键alt+insert直接生成构造器

构造函数的本质

  1. 初始化值
  2. 使用new实例化类时,本质上是在调用构造器
  3. 当有参构造被定义时,如果想使用无参构造,无参构造必须显示定义(可以为空,如上图)

函数重载

函数重载其实就是

函数名字相同,形参不同,使用不同的参数调用相同的函数(方法)名,

从而使一个函数满足多种参数的需求

在这里插入图片描述

方法重写

  1. 必须要有继承关系

  2. 子类中的方法与父类同名且形参一摸一样

  3. 静态方法不存在重写,因为静态方法不需要实例化就可以使用,它是在类生成的时候就生成,所以不管怎么实例类,静态方法最终都是调用自己的类的那个静态方法

  4. 重写存在于非静态方法中,当实例化类之后,实例化的是哪个类,那么对象调用的方法就是那个类的方法,比如实例化子类,那么不管是对象类型是父类还是子类,调用的方法都是子类的方法

    //test()为非静态方法时
    A a = new A();//假设A是B的子类
    B b = new A();
    a.test();
    b.test();//a.test和b.test中的test都是子类A中的test
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值