java基础(类型转换、常量变量、运算符)

3、类型转换

byte(1字节) < short(2字节) 、 char(2字节)< int(4字节)< long(8字节)< float(4字节)< double(8字节)

浮点数优先级更高

1、强制转换

按照上面顺序从大类型的转成小的类型

int i = 128; byte b = (byte)i;

2、自动转换

从小的类型自动转换成大的类型

int i = 128;

double d = i;

3、注意点:

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换成不相干的类型

  3. 在高容量转换成低容量的时候,强制转换

  4. 转换的时候可能存在内存溢出,精度丢失

  5. jdk7以后的新特性,数字中间可以加下划线_,不会影响数字大小

  6. 当数字进行运算时,结果会造成溢出,应先进行类型转换,再进行运算

  7. 在转换成long类型时,数字后面加大写L,不建议使用小写l

 public class Demo02 {
     public static void main(String[] args) {
         int i = 128;
         byte b = (byte)i;//大转小,强制转换
         System.out.println(b);//内存溢出,-128
 ​
         double d = i;//小转大,自动转换
         System.out.println(d);//
 ​
         int i2 = 10_0000_0000;
         System.out.println(i2);//1000000000
 ​
         int i3 = 20;
 //        int sum = i2*i3;//-1474836480
 //        long sum = i2*i3;//-1474836480
         long sum = i2*(long)i3;//20000000000
         long i4 = 20L;
         System.out.println(sum);
     }
 }

4、变量、常量

1、变量

  1. 可以变化的量

  2. java是一种强类型语言,每一个变量都必须声明其类

  3. java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域

     int i = 128;//类型 变量名 = 值;
     String name = "小芳"; 
  • 每个变量都有类型,可以是基本数据类型,也可以是引用类型

  • 变量名必须是合法的标识符

  • 变量声明是一条完整的语句,因此每声明一个都必须以分号结束

变量作用域

  • 类变量:方法外,类类里面,static关键字

  • 局部变量:存在方法里面,必须声明和初始化值

  • 实例变量:类里面,方法外面,从属于对象,如果没有初始化,会存在这个类型的默认值

 public class Demo03 {
     //类变量:static关键字,没有static方法里面无法使用
     static double salary = 2500;
 ​
     //实例变量
     int i;
     String name;
 ​
     public static void main(String[] args) {
         //局部变量
         int a = 30;
         String b = "雨水";
         System.out.println(a);
         System.out.println(b);
 //        System.out.println(i);//不可以直接拿到i
 ​
         //拿到实例变量
         Demo03 demo03 = new Demo03();
         System.out.println(demo03.i);//默认值 0
         System.out.println(demo03.name);//默认值 null
 ​
         //拿到类变量
         System.out.println(salary);
         demo03.add();
     }
 ​
     public void add(){
 //        System.out.println(a);//拿不到main()方法里面的局部变量
 //        System.out.println(b);
 ​
         System.out.println(salary);//可以使用类变量
         System.out.println(i);
         System.out.println(name);
     }
 }

2、常量(Constant)

  • 初始化(initialize)之后不能改变值!不会变动的值

  • 可以理解成一种特殊的变量,它的值被设定之后,在程序运行的过程中不允许被改变

  • 常量名一般使用大写字符

  • 使用final修饰符进行定义常量

     

修饰符不存在先后顺序

3、变量的命名规范

5、运算符

自增、自减

 public class Demo {
     public static void main(String[] args) {
         //++,--  一元运算符,自增,自减
         int a = 5;
         int b = a++;//++在后,是先赋值,后进行自增 b = 5
         //相当于这里多了一行:a = a + 1;
         System.out.println(a);//a = 6
         //相当于这里多了一行:a = a + 1;a = 7
         int c = ++a;//++ 在前,是先自增,后赋值,c = 7;
         System.out.println(a);
         System.out.println(b);
         System.out.println(c);
 ​
         //幂运算 2^3 2*2*2 = 8 很多运算,我们需要使用工具类进行处理
         double pow = Math.pow(2, 3);
         System.out.println(pow);
     }
 }

位运算符

  • 面试题:2*8 怎么计算才会最快?

 public class Demo04 {
     public static void main(String[] args) {
        /*
         位运算符:&、|、^、~
         A = 0010 0110
         B = 1100 0101
         A&B = 0000 0100     &:对位两个都为1,结果对位才为1,其余为0
         A|B = 1110 0111     |:对位两个都为0,结果对位才为0,其余为1
         A^B = 1110 0011     ^:对位两个相同则结果对位为0,其余为1
         ~B  = 0011 1010     ~:取反,0取1,1取0
     
         2*8 怎么样计算才最快? 2*2*2*2
     
         <<(左移)相当于 *2 右边表示乘的次数
         10<<3 = 10*2*2*2
         >>(右移)相当于 /2 右边表示除的次数
         10>>2 = 10/2/2
     
         0000 0000   0
         0000 0001   1
         0000 0010   2
         0000 0011   3
         0000 0100   4
         0000 1000   8
         0001 0000   16
         */
         System.out.println(2<<3);//16
     }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值