Day03-数据结构-运算符

数据类型

基本数据类型

 

127 3万 21亿 ...

byte<short<int<long float<double booleam(true,false)占一个位

1 2 4 8 4 8 的字节

一个字节等于8个位

long的初始化数值要加L (尽量用大写L) long num=30L; float的初始化数值要加F

char代表一个字('e')占2个字节;UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节;Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。 符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。

String不是关键字,它是一个类


 

整数扩展



 

浮点数扩展

float (有限,离散,舍入误差,大约,接近但不等于,最好少点使用浮点数进行比较。)有误差



强制转换

 
System.out.print((int)a);//97
 char c = '\u0061';//a(\u转义字符;\t制表符;\n换行)

  

类型转换

  

 int i = 128;
 byte b = (byte)i;//输出-128(内存溢出,byte最高127)

  

  

低转高

1  int i = 128;
2  double b = i;//自动转换   
 

高转低

 
System.out.print((int)23.7);//23
System.out.print((int)-45.89f)//-45(直接没有小数 只取整数)       
1  int money = 10_0000_0000;//jdk7特性数字之间可以用下划线分割
2  int year = 203  int total = money*year; //-1474836480内存溢出
4  long total2 =money*year;//-1474836480内存溢出(money*year是int,它在转换成long时已经是内存溢出超出int的范围了)
5  long total2 =money*((long)year);//2百亿

 

变量类型

  • 变量可以变化的量

 
public class Demo08{
     //类变量 static(从属于类“Demo08”,下面输出salary会出错)
     static double salary = 2500;
     //属性:变量
     //实例变量:从属对象;如果不初始化,会变成默认值(布尔值默认是false,除了基本数据类型,其余的默认值都是null)
 //main方法(类变量名)
 public static void main(String[] args){
     //局部变量,必须声明和初始化值
     int i=10;
     String name;
     int age;
     System.out.print(i);
     
    //变量类型 变量名字 = new Dem08(); 
     Demo08 demo08 = new Demo08();//实例变量
     System.out.print(demo08.age);//0
     System.out.print(demo08.name);//null
     
     //类变量 static
      System.out.print(salary);//出错
     }
     //其它方法
     public void add(){
         System.out.print(i);
     }
 }

  

常量

 
public class Demo09{
     //修饰符并不存在先后顺序
     static final double PI=3.14;//1. final 常量名 2. static和final可以调换
     public static void main(String[] args){
     System.out.print(PI);//3.14
     }
 ​
 }

  

变量名的命名规范

  • 类名,首字母大写

  • 局部变量,方法名,类成员变量,首字母小写和驼峰(如lastName)

  • 常量,都是大写和下划线

  • 包名,统一小写

运算符

  • 普通加减

 
package yunsuanfu;
 ​
 public class Day03 {
     public static void main(String[] args) {
         long a = 123123123123L;
         int b = 123;
         short c = 10;
         byte d = 8;
         System.out.println(a+b+c+d); //Long
         System.out.println(b+c+d); //Int
         System.out.println(c+d); //Int
 //没有long最后输出的都是int
     }
 }
 //cast转换

 

  • a++与++a的区别

 
package yunsuanfu;
 ​
 public class Day0301 {
     public static void main(String[] args) {
         int a = 3;
         int b = a++;//把a赋值给b,然后a才加1
         System.out.println(a);//4
         int c = ++a;//把a加一的结果给c,a这时候会变成5
         System.out.println(a);//5
         System.out.println(b);//3
         System.out.println(c);//5
         //幂运算  3的二次方
         double pow = Math.pow(3, 2);
         System.out.println(pow);//9.0
     }
 }

  

  • &&与(and) ||或(or) 非

 package yunsuanfu;
 ​
 public class Day0302 {
     public static void main(String[] args) {
         boolean a = true;
         boolean b = false;
         System.out.println("a&&b="+(a&&b));//false  有错就错,全对就对
       //System.out.println("b&&a="+(b&&a)); 直接短路,判断b是错的就不用接着继续算
    /*   int c = 5;
         boolean d = (c<4)&&(c++<4);
         System.out.println(d);//false
         System.out.println(c);//5,因为判断出c<4是错,接着就不运行了  */
         
         System.out.println("a||b="+(a||b));//true   有一个对就对
         System.out.println("!(a&&b)="+!(a&&b));//true   !是相反
     }
 }

  

  • 位运算符

 
package yunsuanfu;
 ​
 public class Day0303 {
     public static void main(String[] args) {
         /*
         A = 0011 1100
         B = 0000 1101
 ​
         A&B = 0000 1100 (只有都是1才是1,其它都是0)
         A|B = 0011 1101 (有1就1)
         A^B = 0011 0001 (相同为0,不相同为1)
         !B = 1111 0010 (与原先完全相反)
         <<(左移)  >>(右移)
 ​
          */
         System.out.println(2<<3);//16  就是0000 0010(2)左移3位为0001 0000(16)
     }
 }

  

 

posted @ 2021-06-09 22:49  浅mo年华  阅读(135)  评论(0)    收藏  举报