Day03

Day03

数据类型拓展

二进制: 十进制:010 十六进制:0x eg:0x10

浮点数拓展:字节的不同会导致比较的不同,所以最好 完全谁用浮点数进行比较

如下:


public class demo02 {
   public static void main(String[] args) {
       //整数拓展: 进制   二进制0b   十进制 八进制 十六进制
       int i=10;
       int i2=010;//八进制0
       int i3=0x10;//十六进制 0x   0~9 A~F 16
       System.out.println(i);
       System.out.println(i2);
       System.out.println(i3);
       System.out.println("============================");
       //====================================
       //浮点数拓展   eg:银行业务的表示   BigDecimal
       //float             有限的 离散的 舍入误差   接近但是不等于
       // 与double
       //最好完全使用浮点数进行比较
       //BigDecimal   数学工具类
       float f=0.1f; //0.1
       double d=1.0/10; //0.1
       System.out.println(f==d);

       float d1=2323233232323f;
       float d2=d1+1;
       System.out.println(d1==d2); //true   ,因为是有限的字节,所以 忽略   了 1
       //==============================================
       // 字符拓展
       //============================
       char c1='a';
       char c2='中';


       System.out.println(c1);
       System.out.println((int)c1); //强制换行
       System.out.println(c2);
       System.out.println((int)c2);//强制换行
       //所有字符的本质还是数字,通过编码Unicode编码转换,eg(97=a, 65=A) 2字节   0~65536



       //转义字符 非常多,自己测试
       //   \t   制表符
        //   \n   换行
       System.out.println("HELLO\tWORLD");

       //======================================
       String sa=new String("dadashisb");
       String sb=new String("dadashisb");
       System.out.println(sa==sb);//FALSE


       String sc="dadashisb";
       String sd="dadashisb";
       System.out.println(sc==sd); //TRUE
       //对象,从内存分析

       //布尔值扩展
       boolean flag=true;

       if (flag){}// if(flag==true)




  }
}

 

字符拓展:、

所有字符本质是数字,通过Unicode编码进行转换

转义字符:非常多。eg:\t,\n等等等等

 

类型转换

低---------------------------高 (小数的优先级大于整数) byte,short,char->int->long->float->double 运算中,不同类型的数据先转化成统一类型,然后进行运算

注意溢出问题,以及转换问题,详情见demo03,如下:

public class demo03 {
   public static void main(String[] args){
       //操作比较大的数的时候,注意溢出问题
       //JDK7新特性,数字之间用下划线分割
       int money=10_0000_0000;
       int years=20;
       int tatal=money*years;       //此时会溢出
       long total2=money*years;    //由于money和years都是int,所以转换之前已经存在问题

       long total3=money*((long)years);     //先把一个数转换成long
       System.out.println(total3);

       //除了转换类型,类也可以转换
  }
}

变量

变量:可以变化的量 //栈?? 每个变量必须声明其类型 JAVA变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

注意事项:

  1. 每个变量都有类型,类型可以使基本类型,月可以是引用类型(变量八大基本类型)

  2. 变量名必须是合法的标识符(注意day02中的常用标识符)

  3. 变量声明是一跳完整的语句,因此每一个变量声明必须以分号结尾

变量作用域

类变量:写在类里面 实例变量:写在类中间 局部变量:写在方法里

public class demo05 {
   //属性:变量
   //类变量   static 只要加了static这个关键词,
   static double salary=2500;

   //实例变量:从属于对象,如果不自行初始化,这个会变成这个类型的默认值
   String name;     //不用初始化 但是用,就需要一些操作
   int age;

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

      //局部变量:实在方法里面的,再两个大括号之间的 ,使用之前必须声明和初始化值。这些声明只在这个括号里面有用
       //方法块,代码块,作用域就比较宽

      //变量类型(就是demo05) 变量名字=new demo05();
       demo05 demo05 = new demo05();
       System.out.println(demo05.age);          //输出是10,由于没有自行初始化,所以输出为这个类型的默认值
       System.out.println(demo05.name);         //输出是null
       /*
       所有数字类型初始化一般都是0(整数)和0.0(小数),
       字符串变量初始化会是一个16位的0,即u0000,
       布尔值:会默认是false
       除了基本类型,其余的默认值都是null
        */


       //类变量   static 只要加了static这个关键词,就可以直接使用,后面会重点讲,前期学习都用这个,后面回血new
       System.out.println(salary);  //此时可以直接输出salary


  }
}

 

常量

常量:初始化之后就不能再改变值,不会变动的值 可以理解成一种特殊的变量,他的值再被设定之后,在程序中就不会再改变

定义方法如下:

final 常量名=值;
eg: final   double  PI=3.14
   
   //常量名一般都大写

eg:

import java.security.spec.RSAOtherPrimeInfo;

public class demo06 {
  //修饰符,不存在先后顺序,有一大堆
  static final double PI=3.14;   //定义常量,可以直接调用,制作一些长宽高等一系列的东西的时候作用大

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

变量的命名规范

  1. 所有变量,方法,类名:见名知意

  2. 类成员变量:首字母小写和驼峰原则:eg monthSalary

  3. 局部变量:首字母和驼峰原则

  4. 常量:大写字母和下划线:MAX_VALUE

  5. 类名:首字母大写和驼峰原则:Man,GodMan

  6. 方法名:首字母小写和驼峰原则:run();runRUN()

以上重点

static和fanal

命名规范

 

 

运算符

算术运算符:+ - * %(取余,念做模),++,--

加减乘除如下:

package base;   //代表当前的包

public class Demo07 {
   public static void main(String[] args) {
       //二元运算符
       //ctrl+d 复制当前行到下一行
       int a=10;
       int b=20;
       int c=25;
       int d=25;
       System.out.println(a+b);
       System.out.println(a-b);
       System.out.println(a*b);
       System.out.println(a/(double)b); //会有小数,要搞清楚作用范围


  }

}

输出字符有优先级,如下

package base;

public class Demo08 {
   public static void main(String[] args) {
       long a=123123123123123L;
       int b=123;
       short c=10;
       byte d=8;
       System.out.println(a+b+c+d);   //Long 有long,结果就是long
       System.out.println(b+c+d);     //int
       System.out.println(c+d);      //int




  }
}
赋值运算符:=

关系运算符:<,>,>=.<=,==,!=(不等于),instanceof

package base;

public class Demo09 {
   public static void main(String[] args) {
       //关系运算符返回的结果:正确,错误
       int a=10;
       int b=20;
       int c=21;
       System.out.println(a>b);
       System.out.println(a<b);
       System.out.println(a==b);
       System.out.println(a!=b);
       System.out.println(c%a);

  }
}

 

 

逻辑运算符:&&,||,! (与或非)

 

位运算符: 条件运算符:? : 扩展复制运算符

 

 

posted @ 2020-08-15 22:07  冯柚子  阅读(206)  评论(0)    收藏  举报