首页 > 技术文章 > Java基础语法

wengbm 2017-12-17 13:48 原文

类型

  • 整数:short(2字节)、int(4字节)、long(8字节)
  • 字节:byte 1个字节,在需要处理字节数据时(图片处理、编码处理等),表示整数及-128~127
  • 浮点数:存储小数数值,float(4个字节)double(8个字节)
  • 字符:char类型存储'A','B'等字符符号。。在JDK中Java的字符采用Unicode6.2.0编码,JVM结果采用utf-16 BIgEndian,所以每个字符占两个字节,汉字和英文字符在Java中同样用双字节存储。
  • 布尔值:false与true。

每个类型的存储值的范围

  //byte、int、short、long取值范围

  System.out.printf("%d~%d%n",Byte.MIN_VALUE,Byte.MAX_VALUE);
  System.out.printf("%d~%d%n",Short.MIN_VALUE,Short.MAX_VALUE);
  System.out.printf("%d~%d%n",Integer.MIN_VALUE,Integer.MAX_VALUE);
  System.out.printf("%d~%d%n",Long.MIN_VALUE,Long.MAX_VALUE);

  //float、double精度范围
  System.out.printf("%d~%d%n",Float.MAX_EXPONENT,Float.MIN_EXPONENT);
  System.out.printf("%d~%d%n",Double.MIN_EXPONENT,Double.MAX_EXPONENT);

  //char可表示的Unicode范围
  System.out.printf("%h~%h%n",Character.MIN_VALUE,Character.MAX_VALUE);
  System.out.printf("%b~%b%n",Boolean.TRUE,Boolean.FALSE);

结果:

  -128~127
  -32768~32767
  -2147483648~2147483647
  -9223372036854775808~9223372036854775807
  127~-126
  -1022~1023
  0~ffff
  true~false

常用格式控制符号

  %%:在字符串中表示%

  %d:以十进制格式输出

  %f:以十进制浮点数格式输出

  %e,%E:以科学浮点数格式输出

  %o:以八进制整数格式输出

  %x,%X:以十六进制整数格式输出

  %s,%S:字符串格式符号

  %c,%C:以字符符号格式输出

  %b,%B:输出Boolean值,true/TRUE,false/FALSE

  %h,%H:使用Integer.toHexString(arg,hashCode())

  %n:输出特定平台的换行符号,window底下为"\r\n" ,linux底下为"\n",MacOS底下为"\r"

  指定精度:指定两位小数:%.2f;

  指定字符宽度:%6.2f   19.25占5个字符所以补了一个空格在前端。

变量(variable)

1.基本规则

  变量在命名时不可以使用数字开头也不可以使用一些特殊字符,变量名不能喝Java关键字同名如int、class等,也不可以与Java保留字同名例如goto。一般以小写字母开始,并在每个单字开始时第一个字母使用大写。int ageOfStudent,驼峰式命名法。

2.字面常量

  在Java中写下一个值成为字面常数(literal Constant)。

  int number0=0b101010101010;//二进制表示

  int number01=0b1010_1010_1010;//余上一行的值等价

  int number1=12;//十进制表示

  int number2=0xC;//十六进制表示

   int number3=014;//八进制表示

  double number4=0.00123;

  double number5=1.23e-3;

  char size="S";

  char symbol="\'";

常用的忽略符号

  \\  \

  \'  '

  \"  "

  \uxxxx  以十六进制数指定Unicode字符输出,

  \xxx   以八进制数指定Unicode字符输出

  \b  倒退一个字符

  \f  换页

  \n  换行

  \r  光标移动至行首

 运算符

  算数运算符:+、-、*、/

  比较运算符:>、<、>=、<=、==、!=

  条件运算符:条件式?成立返回值:失败返回值

  逻辑运算符:且(AND)&&、或(OR)||、反相(NOT)!

  位运算:AND&、OR|、XOR^、补码~。与、或、异或,补码。(左移<<:左移指定的位数,左边被挤出去的丢弃右边补0;右移>>:右边挤出去的丢弃左边补上原来的位;

      >>>右移后最左边一定是补0)

  递增递减运算:i++;++i;i--;--i;(++写在前是先将变量加1再返回值,写在后是先返回值再将变量加1,--同理)

  指定运算:+=;-=;*=;/=;%/;&=;|=;^=;<<=;>>=;      (a+=b : a=a+b)

类型转换

  double pi=3.14;

  float     i=3.14;//编译出错原因是在程序中写下一个浮点数时,编译程序默认使用double型

  float i=3.14F;//告诉编译程序用float类型来存储

  float i=(float)3.14;//强制转换

  int number=2147483648;//错误整数太大

  long number=2147483648;//错误原因是在程序中写下一个整型时默认是使用不超过int类型的长度

  long number=2147483648L;

  int a=10;

  double b=a*3.14;//3.14默认是double所以a的值被提至double空间进行运算

  short a=1;

  short b=2;

  short c=a+b;遗失精度原因操作数不大于int的整数则自动被提升值int类型进行运算

   short c=(short)(a+b);

  自动类型转换

1.简单数据类型之间的转换

  (byte、short、char)->int->long->double.

  低级到高级自动类型转换

  高级到低级强制类型转换

  自动类型

  byte b; int i=b;long c=b;double d=b;

 强制类型

  short  i=99;char c=(char)i; int i=99;char c=(char)i;//精度溢出

      1.float->double

  float f1=100.0f; Float F1=new Float(f1);double d1=F1.doubleValue();

  2.double->int;

   double d1=100.0;Double D1=new Double(d1); int i1=D1.intValue();

  字符串转为其他类型

  1.封装器在调用相关的方法

      new float("32.1").doubleValue();或Double.valueOf("32.1").doubleValue();

  2.静态的parseXXX;String s="1";byte b=Byte.parseByte(s);

  其他类型转换为字符串

  1.x.toString

  2.自动转换 x+"";

  3.String.valueOf(x);  

 

流程控制

 1.if...else条件式

         1) . if(条件式){}

         else{}

    2).  If(条件式一){}

    else if((条件式二{}...

    else{}

 2.switch条件式

  switch(变量或表达式){

    case 整数、字符、字符串、Enumeration:

      描述句;

      break;

     case 整数、字符、字符串、Enumeration:

      描述句;

      break;

    ...

    default:

      描述句;

   }

3.for循环

  for(初始式;执行结果不需是Boolean的重复式;重复式){

    描述句;

  }

4.while循环

  while(条件式){

    描述句;

  }//前测试循环

  do{

    描述句;

  }while(条件式);

5.break、continue

  break:中断当前循环;

  continue:略过之后的描述句;

  break设定标签与区块可以离开整个区块如:

  back:{

    for(int i=0;I<10;i++){

      if(i==9){

        break back;

      }

    }

  }

     continue 可以调至任何一层的for循环忽略之后的描述句

  back1:
  for(int i=0;i<10;i++) {
    back2:
    for(int j=0;j<10;j++) {
      if(j==9) {
        continue back2;
      }
    }
  System.out.println("text");
  }

 

推荐阅读