Java基础复习笔记

本文详细介绍了Java中的八大基本数据类型,包括整型、浮点型、字符型和布尔型,并讨论了不同类型之间的转换和运算规则。此外,还提到了浮点数的舍入误差问题以及字符串在内存中的处理。内容还包括进制转换、字符编码、字符串比较和类型转换的注意事项,以及一元、逻辑和位运算符的使用。
摘要由CSDN通过智能技术生成

Java基础复习笔记

Java 八大基本数据类型

一共四种整数类型
byte 占一个字节(B)=8bit
int 4个字节
short 2 个字节
long 8个字节

两种小数:浮点数
float 4 个字节 double 8个字节
字符: char 占两个字节
布尔:boolean 只占一bit
String 是引用类型不是关键字

扩展内容

1.进制

// An highlighted block
        int i1= 10;   表示十进制
        int i2 =010;  表示八进制
        int i3 = 0x10; 表示十六进制

2.浮点数

// An highlighted block
        float f = 0.1f;
        double d= 1.0/10;
        System.out.println(f==d);
        System.out.println(f);
        System.out.println(d);

        float d1 =2323232323232323f;
        float d2 =d1+1;
        System.out.println("浮点数是有限的 离散的 舍入误差 接近但不等于 最好不要用浮点数进行比较");
        System.out.println(d1==d2);

运算结果

// An highlighted block
      ====================================
false
0.1
0.1
浮点数是有限的 离散的 舍入误差 接近但不等于 最好不要用浮点数进行比较
true

所以涉及到银行业务的切记使用正确的数据类型 可以用BigInteger以及BigDecimal
3.字符扩展

// An highlighted block
System.out.println("=====================");
        char c1 ='a';
        char c2 ='潇';
        System.out.println((int)c1);
// An highlighted block
运算结果:
=====================
97

字符本质就是unicode 编码,可以强制转换成数字
4.字符串扩展
面试题

// An highlighted block
 System.out.println("=============");
        String str1= "asdd";
        String str2="asdd";
        System.out.println(str1==str2);
        
        String str3 = new String("add");
        String str4 = new String("add");

System.out.println("=================================================");
        System.out.println(str3==str4);

运算结果
```javascript
// An highlighted block
=============
true
=================================================
false

str1,str2指向常量池 ==比较就是ture,str3,str4 用了new 方法 他们的地址不一样 故而是flase.为了验证 我们用identityHashCode(),打印出哈希值.

System.out.println("=============");
        String str1= "asdd";
        String str2="asdd";
        System.out.println(str1==str2);

        System.out.println("=============str1和str2的哈希值");
       System.out.println(System.identityHashCode(str1));
        System.out.println(System.identityHashCode(str2));

        String str3 = new String("add");
        String str4 = new String("add");
        int a = System.identityHashCode(str3);
        int b = System.identityHashCode(str4);
       System.out.println("=============str3和str4的哈希值\n"+a);
        System.out.println(b);
        System.out.println("=================================================");
        System.out.println(str3==str4);


结果
=============str1和str2的哈希值
460141958
460141958
=============str3和str4的哈希值
1163157884
1956725890
=================================================

类型转化

分为强制转换 和自动转型。从低容量到高容量是自动转换, 从高容量到低容量用到强制转换 但是有可能发生内存溢出的情况

// An highlighted block
 public static void main(String[] args) {
        /*
        类型转换 byte short char int folat double  小数优先级大于整数
         */
        int i = 128;
        byte b1 = (byte) i;//内存溢出
        System.out.println(b1);

        //强制转换 高到低   低到高  自动转换
       
        System.out.println("进度丢失例子======================");
        System.out.println((int)28.23);
        System.out.println((int)10.22f);

 
    }

注意:
1.布尔值不能进行转换
2.不能对象类型转换成不相干的类型
3.高容量转换为低容量时 强制转换
4.转换时可能出现内存溢出精度丢失的问题

运算时的规则 转换成同一类型在进行计算

       System.out.println("=================运算时的规则 转换成同一类型在进行计算=========");
      char c = 'a';
      int i1 =c+1;
      char c1 = (char) i1;
        System.out.println(i1);
        System.out.println(c1);

运算时默认是int如果运算时数值超过范围 则需要进行强制转换。

    public static void main(String[] args) {
    //操作数较大时注意溢出问题
    //JDK7 新特性 数字之间可以用下划线分割
    int money = 10_0000_0000;
    byte years = 20;
    int total = money*years;//计算结果溢出
    long total2 = money*years;//默认int  转换之前就已经出现问题了
        long total3 = money*(long)years;//先把一个数转换成long
    System.out.println(total);
    System.out.println(total2);
    System.out.println(total3);

变量

变量声明定义方法

    int a=1,b=2,c=3;//可以但是不建议,程序可读性较差
    int d =1;

变量分为类变量 局部变量 实例变量

  //变量类型  类变量 局部变量  实例变量
    //实例变量
    String name;
    float salary;
    //类变量‘
    static String peopele;
    static  boolean flage;


    //  常量初始化之后不能再改变  final  是修饰符 不存在前后。 一般用大写字母表示
    static  final  double PI = 3.123123213123;
    static  public void main(String[] args) {
        //局部变量在方法里 且必须声明和赋值
        int age =18;
        Demon07 demon07 = new Demon07();
        //基本数据类型默认值是 0 0.0   布尔是默认flase  引用类型默认 null
        System.out.println(demon07.name);
        System.out.println(demon07.salary);
        System.out.println(peopele);
        System.out.println(flage);
        System.out.println(PI);
        
  变量命名规范
  所有变量,方法,类民  见名知意
  局部变量,和方法名 首字母小写和驼峰规则 run run_Time
  常量:大写字母和下划线MAX_VALUE
  类名 : 首字母大写,和驼峰原则 Man My_Class

运算符

一元运算

 //二元运算  ctrl + D 快捷键 复制当前行到下一行
        int a =10;
        int b =15;
        int c =20;
        int d =50;
        System.out.println(a+b);
        System.out.println(c-b);
        System.out.println(a*b);
        System.out.println((double) c/d);//由于int  只保留整数  所以我就强转一下

        System.out.println("============================================");
        long l = 123124324324324L;
        int i = 1222;
        byte b1=10;
        System.out.println(l+i+b1);
        System.out.println(i+b1);//默认都是int类型
        System.out.println("======================关系运算符======================");
        int i1 = 10;
        int i2  =10;
        System.out.println(a>b);
        System.out.println(i1==i2);
        System.out.println(i1!=i2);
        System.out.println("取余运算!!");
        //求余运算  后面那个比前面大时  直接输出前面那个数字
        int a1 =10;
        int c1 = 9;
        System.out.println(a1%c1);

一元运算符

++a 和a++的区别 。 a++先赋值 再自增,++a 先自增 再赋值

public static void main(String[] args) {
        // ++ --  一元运算符
        int a =2;
        int b ;
        int c =3;
        b = a++; //先赋值 再自增
        System.out.println(b);
        System.out.println(a);
        c =++a;//先自增 再赋值
        System.out.println(a);
        System.out.println(c);

逻辑运算符

与 或 非
短路运算 && 前一个是假 就直接返回结果 ||有一个为真 就返回结果

// An highlighted block
public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        System.out.println("a&&b   "+   (a&&b));
        System.out.println("a||b   "+     (a||b));
        System.out.println("!(a||b)    "+      !(a||b));
    //短路运算 &&  前一个是假 就直接返回结果  ||有一个为真  就返回结果
        int c = 4;
        int c1 = 3;
        boolean d =(c<3) && (c++<4);
        boolean d2 = (c<7) || (c1--<1);
        System.out.println(d);
        System.out.println(c);
        System.out.println(d2);
        System.out.println(c1);
    }

位运算

A = 0011 1100
B = 0000 1101

A&B 0000 1100 A与B 全11为1
A|B 0011 1101 A或B 全00为o
A^B 0011 0001 异或 相同为0 不同为1
~B 1111 0010

面试题:28 怎么运算最快? 28 = 16 (222)
用位运算 效率极高!!!!
0000 0001 1
0000 0010 2
0000 0100 4
。。。。
0001 0000 16 2<<3 就是2的二进制左移三位
面试题:int a =97 字符串连接符 “” + a 和a+“”
字符串连接符 “” + String 和运算顺序有关 + 运算从左往右 如果先是字符串 就是拼接符号 . 可以添加一个()括号

// An highlighted block
public static void main(String[] args) {
        int a=10,b=20,c=30;
        a+=b;//a=a+b
        c-=b;//c=c-b
        System.out.println(a);
        System.out.println(c);
        System.out.println(a+b+"");
        System.out.println("" +a+b);
        System.out.println(""+(a+b));

    }

三目运算

x?y:z;如果x是ture 则y 否则z

// An highlighted block
        System.out.println("=======================三目运算===============================");
        int score = 50;
        String type = score<60 ? "不及格": "及格";
        System.out.println(type);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值