03java基础知识

标识符和关键字


eg:

 public class Hello{
     public static void main(String[] args){
      String name="fd";  
    }
 }

这里的class就是类名,main就是方法名。(class类,main方法)


  • 所有的标识符都是以字母(A-Z或者a-z),美元符$,或者下划线(_)开始

  • 首字母之后可以使字母(A-Z或者a-z),美元符$,下划线(_)或者任何字符组合

  • 不能使用关键字作为作为变量名或者方法名

  • 标识符是大小写敏感的

  • 可以使用中文作为方法名或者变量名,但是不建议

数据类型

 

 

  • 基本数据类型(Primitive type)

 public class datatype{
     public static void main(String[] args){
         //八大基本数据类型
         //整数
         int num01=10//int的范围是正负20亿
         byte num02=20;//byte的范围是-128-127
         short num03=30;
         long num04=40L;//long类型的数字要在末尾加上L,和short类型的数字区分
         //小数:浮点数
         float num05=3.14F;//单精度浮点数要在末尾加上F,和double类型进行区分
         double num06=6.28;
         //字符
         char name='a';//字符类型只能是单个字符
         char name='国';//字符类型可以是单个中文字符
         char name='ab';//错误,不是单个
         //布尔值,只能表示是非
         boolean flag01=true;
         boolean flag02=false;
    }
 }

 

  • 字节

     

     

类型转换

运算中,不同类型的数据先转化为同一类型,然后才能进行运算

低------------------------------------------------------------->高(优先级)

byte,short,char < int < long < float < double

 public class demo{
     public static void main(String[] args){
         int i=128;
         %byte b=i;%此处会报错,高级不能直接赋给低级,需要进行强制类型转换
         %更需要注意的是int i=128已经超出了byte的数据类型的内存长度(-128-127),强制类型转换后会产生内存溢出
         byte b=(byte)i;
         double c=i;%此处没有问题,低级的可以直接赋值给更高的优先级的数据类型
         %总结上面内容就是,数据类型优先级:高赋值给低要强制转换,低赋值给高可自动转换
         /*注意:
         1.不能对布尔值与其他数据类型进行转换
         2.不能把对象数据类型转换为不相干的数据类型
         3.高优先级转换到低优先级使用强制类型转换,反之则自动转换
         4.转换时可能存在内存溢出或者精度问题
         */
         system.out.ptintln((int)3.14f);%输出结果是3,损失了精度
         char d='a';%字符变量d存的是'a',这个'a'并不只是一个字符,在内存中它对应着一个ASCII码,是可以进行加减运算的
         int e=d+1;%低优先级向高优先级可进行自动类型转换
         system.out.ptintln(e);%打印a+1的ASCII码,98,因为e就是int类型的
         system.out.ptintln((char)e);%高向低强制转换
    }
 }
 public class demo{
     public static void main(String[] args){
         //操作比较大的数的时候,注意溢出问题
         //JDK7以后的新特性,数字之间可以用下划线分割
         int money=1_000_000_000;
         int years=20;
         int total01=money*years;//output:-1474936480,计算的时候产生了溢出,int类型的范围大致是±21亿
         long total02=money*years;//output:-1474936480,仍产生溢出,
         /*
         两个int类型的数据先计算,然后赋值给total02(long),但是仍然溢出,对比上一句发现是计算就出问题了,也就是说int*int结果已经溢出了int类型的   范围,再赋值也是把错误的数据(溢出的数据)给了total02,所以出错。
         */
         long total03=money*((long)years);//先把其中一个变量转换成long数据类型,会把整个表达式的数据范围都提升,计算之前就已经达到精度
    }
 }

注意:小写的“l”很容易看成数字“1”,所以使用的时候尽量使用大写的L。

 

 

posted @ 2020-09-19 21:44  发达的范  阅读(286)  评论(1编辑  收藏  举报