java基础笔记

本文详细介绍了Java中的基本数据类型,包括整数、浮点数、字符和字符串的表示及转换,强调了浮点数的精度问题和字符的Unicode编码。还讨论了类型转换的规则和潜在问题,以及变量的局部、成员和静态变量的生命周期。此外,提到了常量的final修饰以及运算符的优先级。最后,简要说明了构造器在对象初始化中的作用。
摘要由CSDN通过智能技术生成

基本运算符

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

        byte num1 = 10; //1字节
        short num2 = 20;//2字节
        int num3 = 30;//4字节
        long num4 = 40L;//8字节

        float num5 = 3.14F;//4字节
        double num6 = 3.1415;//8字节

        char num7 = 'A';//2字节
        char num8 = '我';

        boolean num9 = true;//1位
    }
}

整数拓展

进制表示

整数拓展–进制: 二进制 0b、十进制、八进制 0、十六进制 0x

int num1 = 10;
int num2 = 010;  //十进制的 8
int num3 = 0x10; //十进制的 16
浮点数

//浮点数拓展: float 有限、离散、舍入误差、大约、接近但不等于
//最好完全避免使用浮点数进行比较
//银行业务—BigDecimal: 数学工具类

float f1 = 0.1f;
double f2 = 1.0/10;
System.out.println(f1 == f2);//false

float f3 = 2131313231313f;
float f4 = f3 + 1;
System.out.println(f3 == f4);//true
字符

所有的字符本身还是数字

char c1 = 'a';
System.out.println((int)c1);//97
char c2 = '中';
System.out.println((int)c2);//20013
char c3 = '\u0061';
System.out.println(c3);//a
字符串
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);//false
String s3 = "hello";
String s4 = "hello";
System.out.println(s3 == s4);//true

类型转换

byte、short、char —> int —> long —> float —> double
int -->float、long -->float、long -->double 可能会有精度损失

int num1 = 128;
byte num2 = (byte) num1;//-128: 大转小,强制转换,内存溢出

//不能对布尔值转换
//不能把对象类型转换为不相干的类型
//高容量转低容量时强制转换,存在内存溢出或者精度问题

System.out.println((int)23.7);//23
System.out.println((int)-23.7);//-23

//操作比较大的数,JDK7新特性,可用下划线分割

int money = 10_0000_0000;
System.out.println(money);//10 0000 0000
int years = 20;
long total = money * years;//等式右边默认是int,转换之前已经出问题了
System.out.println(total);//-1474836480
long total2 = money * ((long)years);//运算前先转化long,
//或者long total2 = 1L * money * years;
System.out.println(total2);//20 0000 0000

变量

局部变量

方法或语句块内部,声明位置开始,方法执行结束

成员变量(实例变量)

类内部,方法外,成员变量跟随对象的创建、消失
数值类型默认0或者0.0,字符型默认u0000,布尔值默认false,除了基本类型其他都是null

静态变量(类变量)

类内部,static修饰,静态变量随类的加载、卸载而创建、消失

public class Demo01 {

    //类变量(静态变量)
    static double salary = 2500;

    //实例变量(成员变量):从属于对象,数值类型默认0或者0.0,字符u0000,布尔值默认false,除了基本类型其他都是null
    String name;
    int age;
    char c;

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

        //实例变量不可以直接使用,需要先声明对象,在使用
        Demo01 demo = new Demo01();
        System.out.println(demo.age);//默认值0
        System.out.println(demo.name);//默认值null
        System.out.println(demo.c);//默认u0000

        //类变量可直接使用
        System.out.println(salary);
    }

    //其他方法
    public void add(){

    }
}

常量

final 关键字的作用:

  1. 修饰变量:不可赋值;
  2. 修饰方法:不可重写,可重载;
  3. 修饰类:不可被继承。

static:是修饰符,不存在先后顺序

public class Demo02 {
	static final double PI = 3.14;//final 常量不可变
    final static double PL = 3.15;

    public static void main(String[] args) {
        System.out.println(PI);//3.14
        System.out.println(PL);//3.15
    }
}

运算

没long、double 都转化成int

public static void main(String[] args) {
        long a = 123213123123L;
        int b = 10;
        short c = 20;
        byte d = 30;
        double e = 3.12;

        System.out.println(a+b+c+d);//long
        System.out.println(b+c+d+e);//double
        System.out.println(b+c+d);//int 没long、double 都转化成int
        System.out.println(c+d);//int
    }

自增、自减

public static void main(String[] args) {
    int a = 3;
    int b = a++;//先用再加
    int c = ++a;//先加再用

    System.out.println(a);//5
    System.out.println(b);//3
    System.out.println(c);//5

    double pow = Math.pow(a, b);
    System.out.println(pow);
}

短路运算

只通过左边运算就可以判断结果,不执行右边操作,提高效率
短路与:false && * ----false
短路或:true || * ----true

public static void main(String[] args) {
    boolean a = false;
    boolean b = true;
    //短路运算
    System.out.println(a && b);//此处没有执行b
}

运算符

算数运算符比关系运算符高,关系运算符比位运算和逻辑运算符高,非大于与,与大于或
a || b && c ---->a || (b && c)

构造器

构造器用于对象的初始化,通过new关键字调用

创建对象四步

//1.分配对象空间,并将对象成员变量初始化为0或空
//2.执行属性值的显式初始化
//3.执行构造方法
//4.返回对象的地址给相关的变量

public class Demo01 {
    double x, y;
	//构造器
    Demo01(double x, double y){
        this.x = x;
        this.y = y;
    }
	//获取两点距离
    public double getDistance(Demo01 p){
        return Math.sqrt((x-p.x) * (x-p.x) + (y-p.y) * (y-p.y));
    }

    public static void main(String[] args) {
        Demo01 p1 = new Demo01(3.0,4.0);
        Demo01 p2 = new Demo01(0.0,0.0);
        System.out.println(p1.getDistance(p2));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值