• JAVA语法基础


    Java中标识符的命名必须满足以下原则:

    p 标识符必须以字母、下划线(_)或美元符($)开头,后面可以跟字母、数字、下划线或美元符

    p 除下划线“_”和“$”符号外,标识符中不包含任何特殊字符,如空格

    p 标识符区分大小写,比如,“abc”和“Abc”是两个不同的标识符

    p 对于标识符的长度没有限制

    p 不能使用Java关键字作为标识符

    根据上述原则,可知:myvar、_myvar、$myvar、_9myvar等都是合法的标识符,而下面的标识符都是不合法的:

    my var //包含空格

    9myvar //以数字开头

    a+c //包含特殊字符“+”

    注意:Java中的关键字都是小写的,但是true和false都不是Java中的关键字。

    标识符应该见名知意。

        Java中的关键字(保留字),就是Java保留下来用作特殊用途的一些词。这些关键字不能当做标识符使用。Java中的关键字如下:

    abstract

    assert

    Boolean

    break

    byte

    case

    catch

    char

    class

    continue

    const

    default

    do

    double

    else

    extends

    enum

    final

    finally

    float

    for

    goto

    if

    implements

    import

    instanceof

    int

    interface

    long

    native

    new

    package

    private

    protected

    public

    return

    short

    static

    synchronized

    super

    strictfp

    this

    throw

    throws

    transient

    try

    void

    volatile

    while

    其中goto和const现在基本上不用了。另外true、false和null虽然不是关键字,但是也不能用作标识符。

    变量:所谓的变量就是利用声明的方式将内存中的某个区域保留下来,然后起一个名字供程序使用。变量包含三个要素:变量名、变量的数据类型和变量的值,变量必须先声明然后再使用。

    变量的定义方式:

    <data_type>  var_name = var_value;

    其中data_type是Java中的数据类型,var_name是变量名,要符合标识符的命名规则。

    例如:int num;

    可以同时声明多个同类型的变量,变量之间用“,”隔开:

    int num,num1,num2;

    但是不建议使用这种方式,每行定义一个变量。

    常量:程序运行期间不变的量。在Java中使用final来定义常量。定义方式如下:

    final <data_type>  var_name = var_value;

    其中final是关键字,表示该变量只能赋值一次,必须注明,

    举例如下:

    final double PI = 3.1415926; //

    final Boolean IS_MAN = true; //

    注意:常量名通常全部采用大写字母,如果常量名由多个单词组成,则单词之间用下划线“_”来分割,另外需要在定义的同时对常量进行初始化。

    2、Java的数据类型,运算符

    Java是一种强类型的语言,所有的变量在使用之前必须要声明,这就涉及到变量的类型和名称,名称前面已经介绍过了;在Java中,数据类型分为:原生数据类型(primitive type)和引用数据类型(reference type)。

    原生数据类型(primitive type)又称为基本数据类型,是Java中最基本最简单的数据类型,原生数据类型一次只能存放一个值,它又分为下面几种:

    整数类型:int,long,short,byte

    浮点类型:double,float

    布尔类型:boolean

    字符类型:char ‘u0000’-‘uffff’

    类型

    大小/位

    取值范围

    说明

    默认值

    byte字节型

    8

    -27-27-1

    8-bit有符号数的二进制补码

    0

    short短整型

    16

    -215-215-1

    16-bit有符号数的二进制补码

    0

    int整型

    32

    -231-231-1

    32-bit有符号数的二进制补码

    0

    long长整形

    64

    -263-263-1

    64-bit有符号数的二进制补码

    0L

    float单精度

    32

    大约-3.4E+38~3.4E+38

    32-bit IEEE754

    0.0f

    double双精度

    64

    大约-1.7E308~1.7E308

    64-bit IEEE754

    0.0d

    boolean布尔型

    true/false

    false

    char字符型

    16

    ‘u0000’-‘uffff’

    16-bit Unicode

    ‘u0000’

    说明:由于float和double表示的都是约数,所以不要用它们表示需要精确的数,比如货币等,如果要表示精确值,需要使用java.math.BigDecimal类。

    boolean表示1位信息,但是它的长度/大小没有确切的定义。

    默认值,在Java中,当字段(属性)在声明时没有初始化,则编译器会为其赋上一个合理的默认值。

    char类型的值要使用一对西文单引号’’括起来,在Java中,西文单引号和双引号是定界符,所以在Java中要想输出西文单引号这样的特殊字符时,需要使用特殊的格式,这就是转义字符,常用的转义字符如下:

    转义字符

    含义

    ddd

    1~3位8进制数所表示的字符

    uxxxx

    1~4位16进制数所表示的字符

    单引号Single Quote

    双引号Double Quote

    \

    反斜线Backslash

    

    退格Backspace

    回车Carriage Return

    换行Linefeed

    制表符Tab

    f

    换页Formfeed

    类型转换,类型转换分为自动类型转换和强制类型转换两种。

    自动类型转换:将一种类型的值赋给另一种类型的变量时发生的类型转换,自动类型转换需要满足以下两个条件:1)转换前的类型和转换后的类型兼容;2)转换后的类型的表示范围大于转换前的类型的表示范围。通常的转换如下:

    byte→short→char→int→long→float→double    白芍茶因狼服大宝

     1 public class TypeCast {
     2     public static void main(String[] args) {
     3         int i = 100;
     4         char c1 = 'a';//注意用char生命的是要加''的
     5         byte b = 3;
     6         long l = 567L;//声明长整形的变量,其后要加上类型符L
     7         float f = 1.89f;//声明float类型的变量,其后要加上类型符f
     8         double d = 2.1;
     9         int i1 = i + c1; // char类型的变量c1自动转换为int类型参加运算
    10         long l1 = l - i1; // int类型的变量i1自动转换为long类型参加运算
    11         float f1 = b * f; // byte类型的变量b自动转换为float类型参加运算
    12         /* int类型的变量i1自动转换为与f1一致的float类型f1/i1计算结果为float类型. 然后再转换为与d一致的double类型。 */
    13         double d1 = d + f1 / i1;
    14         System.out.println("i1=" + i1);
    15         System.out.println("l1=" + l1);
    16         System.out.println("f1=" + f1);
    17         System.out.println("d1=" + d1);
    18     }
    19 }

    i1=197

    l1=370

    f1=5.67

    d1=2.1287817269563676





    强制类型转换:当要将一个类型表示范围的数赋值给表示范围小的数的时候,例如要将一个double类型的数赋值给int类的数的时候,就需要强制类型转换,语法格式如下:

    data_type var1=(data_type)var2;

    例如:

    float flag = 30.33f;

    int num = (int)flag;

    在强制类型转换中会丢失精度。在上面的例子中num的值是30。

    运算符:算术,比较,逻辑,位,赋值运算符,条件运算符。

    算术运算符:

    运算符

    数学含义

    示例

    运算符

    数学含义

    示例

    a+b

    %

    取模

    a%b

    -

    减或负号

    a-b,-b

    ++

    自增

    a++,++a

    *

    a*b

    --

    自减

    a--,--a

    /

    a/b

    比较运算符:

    运算符

    数学含义

    示例

    运算符

    数学含义

    示例

    >

    大于

    a>b

    >=

    大于等于

    a>=b

    <

    小于

    a<b

    <=

    小于等于

    a<=a

    ==

    等于

    a==b

    !=

    逻辑运算符:

    运算符

    数学含义

    示例

    !

    !a

    &&

    a&&b

    ||

    a||b

    位运算符:

    运算符

    数学含义

    说明

    示例

    按位非(NOT)

    按位非也叫做补,一元运算符NOT“~”是对其运算数的每一位取反。 

    ~ 00101010

    = 11010101 

    &

    按位与(AND) 

    按位与运算符“&”,如果两个运算数都是1,则结果为1。其他情况下,结果均为零。 

    00101010 & 00001111 = 00001010 

    |

    按位或(OR) 

    按位或运算符“|”,任何一个运算数为1,则结果为1。 

    00101010 | 00001111 = 00101111 

    ^

    按位异或(XOR) 

    按位异或运算符“^”,只有在两个比较的位不同时其结果是1。 

    <<

    左移 

    value << num。左移运算符<<使指定值的所有位都左移num位。每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。 

    11111000 << 1 

    = 11110000 

    >>

    右移 

    右移运算符>>使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)由原来最高位的数字补充。 

    11111000 >> 1 

    = 11111100 

    >>>

    无符号右移

    无符号右移运算符>>>使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)固定由0补充。

    11111000 >>> 1 

    = 01111100 

    赋值运算符:

    运算符

    示例

    运算符

    示例

    +=

    a += b

    /=

    a /= b

    -=

    a -= b

    %=

    a %= b

    *=

    a *= b

    =

    a = b

    条件运算符:

    条件运算符是三目运算符,其语法格式如下:

     <条件表达式>?表达式1:表达式2

    当条件表达式的值为真时,运算表达式1,否则运行表达式2。

    运算符的优先级

    优先级

    运算符

    运算符名称

    运算次序

    1

    ()

    Parentheses

    left to right

    ()

    Method Call

    left to right

    []

    Array Subscript

    left to right

    .

    Object member access

    left to right

    2

    ++

    Postincrement/Preincrement

    right to left

    --

    Postdecrement/Predecrement

    right to left

    +

    Unary plus

    right to left

    -

    Unary minus

    right to left

    Unary logical negation

    right to left

    ~

    unary bitwise complement

    right to left

    3

    (type)

    Unary casting

    right to left

    new

    Creating Object

    right to left

    4

    *

    Multiplication

    left to right

    /

    Division

    left to right

    %

    Remainder

    left to right

    5

    +

    Addition or string concatenation

    left to right

    -

    Subtraction

    left to right

    6

    <<

    Left shift

    left to right

    >>

    Right shift with sign extension

    left to right

    >>>

    Right shift with zero extension

    left to right

    7

    <

    Less than

    left to right

    <=

    Less than or equal to

    left to right

    >

    Greater than

    left to right

    >=

    Greater than or equal to

    left to right

    instanceof

    Checking object type/type comparison

    left to right

    8

    ==

    Equal comparison

    left to right

    !=

    Not equal

    left to right

    9

    &

    bitwise AND/unconditional AND

    left to right

    10

    ^

    bitwise exclusive OR/boolean logical exclusive OR

    left to right

    11

    |

    bitwise inclusive OR/boolean logical inclusive OR

    left to right

    12

    &&

    conditional AND

    left to right

    13

    ||

    conditional OR

    left to right

    14

    ?:

    conditional

    right to left

    15

    =

    assignment

    right to left

    +=

    Addition assignment

    right to left

    -=

    Subtractionassignment

    right to left

    *=

    Multiplication assignment

    right to left

    /=

    Division assignment

    right to left

    %=     

    Remainder assignment

    right to left

    16

    &=

    bitwise AND assignment

    right to left

    |=

    bitwise inclusive OR assignment

    right to left

    ^=

    bitwise exclusive OR assignment

    right to left

    <<=

    bitwise left shift assignment

    right to left

    >>=

    bitwise signed-right-shift assignment

    right to left

    >>>=

    bitwise unsigned-right-shift assignment

    right to left

    注意:运算符的优先级自上到下,由高到低。同一组中的运算符优先级相同。

    引用数据类型reference type分为:

    数组array  类:class  接口:interface;枚举:enum  注解:annotation

    import java.util.Scanner;
    public class GradeIf {
        public static void main(String[] args) {
            System.out.println("Please input the score:");
            Scanner scanner = new Scanner(System.in);
            int score = scanner.nextInt();
            char grade = 'A';
    if (score >= 90) {
                grade = 'A';
            } else if (score >= 80) {
                grade = 'B';
            } else if (score >= 70) {
                grade = 'C';
            } else if (score >= 60) {
                grade = 'D';
            } else{
                grade = 'E';
            } 
                System.out.println("Grade = " + grade);
        }
    }
    
    

       switch语句



    import java.util.Scanner; public class Grade { public static void main(String[] args) { System.out.println("Please input the score:"); Scanner scanner = new Scanner(System.in); int score = scanner.nextInt(); switch(score/10){ case 10: case 9: System.out.println("优秀!"); break; case 8: System.out.println("良好!"); break; case 7: System.out.println("中等!"); break; case 6: System.out.println("及格!"); break; default: System.out.println("不及格!"); } }
    注意switch 与 case break default 的搭配!!!!!!!!

    while语句

    public class WhileOP {
        public static void main(String[] args) {
            int count = 5;// 循环上限
            int i = 1;// 迭代指示器
            while (i < count) {
                System.out.println("当前是: " + i);
                i++;
            }
        }
    }

    do-while语句

    public class DoWhileOP {
        public static void main(String[] args) {
            int count = 5;// 循环上限
            int i = 1;// 迭代指示器
            do {
                System.out.println("当前是: " + i);
                i++;
            } while (i < count);//注意do{}后面是没有分号的,而while()后面有分号
        }
    }

     while do 和 do while
      循环次数一样

    for(initialization;condition;update){

        statements;

    }

    举例如下:

    public class ForOP {
        public static void main(String[] args) {
            int count = 5;// 循环上限
            for (int i = 0; i < count; i++) {
                System.out.println("当前是: " + i);
            }
        }
    }

    3.3控制转移语句

    break语句:在循环中用于立即从当前循环终止控制

    continue语句:从其调用处跳至循环的开始处

    return语句 :其之后的语句将不再执行

  • 相关阅读:
    MongoDB存储时间
    如何在博客园随笔中增加章节导航
    如何优雅地从CSDN转载文章
    线段树详解(原理、实现与应用)
    Codeforces 1076D——最短路算法
    顶点支配、独立与覆盖
    CodeForces
    数据结构一——顺序表
    平面图的基本概念及性质
    编程之美——一摞烙饼的排序(暴搜+剪枝)
  • 原文地址:https://www.cnblogs.com/mmlovejj/p/5311509.html
Copyright © 2020-2023  润新知