java 数据类型&运算符


java数据类型&运算符

java数据类型分类

基本数据类型

byte(1byte=8bit)、char(2byte)、short(2byte)、int(4byte)、long(8byte)、float(4byte)、double(8byte)、boolean(true、false)

引用数据类型

数组、class、interface、reference……

整型

byte(1byte)、short(2byte)、int(4byte)、long(8byte)

  1. byte范围:-128~127

  2. 声明long型变量,必须以”l”或“L”结尾

  3. 默认类型是:int型

int i = 10;

long l = 10L

浮点型 float(4byte)、double(8byte)

  1. 声明float型变量,必须以”f”或“F”结尾

  2. 默认类型是:double型

float f = 1,0f;

double d = 1.0;

字符型 char(2byte)

  1. char类型变量

char c = '';

char ch = 'a';

布尔型 boolean

  1. 只能赋值:true、false

  2. 常常在条件判断、循环结构中使用

boolean b1 = true;

boolean b2 = false;

变 量

变量定义格式

数据类型 变量名 = 变量值;

变量说明

  1. 变量必须先声明,后使用

  2. 变量定义在作用域内,在作用域内,它是有效的

  3. 同一个作用域内,不可以声明两个同名的变量

基本数据类型变量间运算规则

  1. 自动类型转换 byte、char、short、-->int-->long-->float-->double

结论】:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。

  1. 强制类型转换
public static void main(String[] args){
    int i =10;
    byte b = (byte)i;
    System.out.println(b);
}

注意点】:强制类型转换,可能导致精度损失。

String与基本数据类型的运算

  1. String属于引用数据类型,翻译为:字符串

  2. 声明String类型变量时,使用一对""

  3. String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+

  4. 运算的结果仍然是String类型

常 量(final关键字)

final int i = 10;

Java运算符

算术运算符: + - + - * / % (前)++ (后)++ (前)-- (后)-- +

  1. (前)++ :先自增1,后运算

? (后)++ :先运算,后自增1

  1. (前)-- :先自减1,后运算

? (后)-- :先运算,后自减1

  1. return --i;//先-1,后返回

? return i--;//先返回,后-1

  1. 连接符:+:只能使用在String与其他数据类型变量之间使用。

赋值运算符:= += -= *= /= %=

  1. 运算的结果不会改变变量本身的数据类型

  2. 开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num = 10;)

    方式一:num = num + 2;

    方式二:num += 2; (推荐)

  3. 开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;)

    方式一:num = num + 1;

    方式二:num += 1;

    方式三:num++; (推荐)

比较运算符(关系运算符): == != > < >= <= instanceof

  1. 比较运算符的结果是boolean类型

  2. >< >= <= :只能使用在数值类型的数据之间

  3. == 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间

    Person p1 = new Person(1);

    Person p2 = new Person(2);

    boolean b1 = (p1 ==p2);//比较两个Person是否是同一个人(比较地址值),两个对象是否指向同一个内存空间,在堆空间中开辟了两个对象。//false

    boolean b2 = (p1 != p2);//true

逻辑运算符:& && | || ! ^

  1. 逻辑运算符操作的都是boolean类型的变量,而且结果也是boolean类型

位运算符:<< >> >>> & | ^ ~

  1. 位运算符操作的都是整型的数据

  2. << :在一定范围内,每向左移1位,相当于 * 2

    >> :在一定范围内,每向右移1位,相当于 / 2

三元运算符:(条件表达式)? 表达式1 : 表达式2

  1. 条件表达式的结果为boolean类型

  2. 根据条件表达式真或假,决定执行表达式1,还是表达式2.

    如果表达式为true,则执行表达式1。

    如果表达式为false,则执行表达式2。

  3. 表达式1 和表达式2要求是一致的。

  4. 三元运算符可以嵌套使用

    4.1 凡是可以使用三元运算符的地方,都可以改写为if-else,反之,不成立。

    4.2 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。

原因】:简洁、执行效率高。

流程控制

if-else

@Test
public void test01(){
    Scanner scan = new Scanner(System.in);
    int score = scan.nexInt();
    if(score == 100){
        System.out.println("优秀!");
    }else if(score > 80){
        System.out.println("良好!");
    }else if(score >= 60){
        System.out.println("及格!");
    }else{
        System.out.println("不及格!");
    }
}

switch-case

表达式:byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)

public static void main(String[] args){
    int option = 1;
    switch(option){
        case 1:
            System.out.println("one");
            break;
        case 2:
            System.out.println("two");
            break;
        default:
           	System.out.println("other");
            break;
    }
}

do-while 循环

public static void main(String[] args){
    int sum = 0;
    int i = 0;
    do{
        sum += i;
        i++;
    }while(i<=100) 
    System.out.println(sum);    
}

while 循环

public static void main(String[] args){
    int sum = 0;
    int i = 0;
	while(i<=100){
        sum += i;
        i++;
    }
    System.out.println(sum);
}

for 循环

public static void main(String[] args){
    int result = 0;
   for(int i = 0; i<= 100; i++){
       if(i%2 != 0){
           result += i;
       }
   }
    System.out.println("result" + result);
}

recursion 递归

public static void main(String[] args){
	System.out.println(resursion(100));
}

public static void recursion(int val){
    if(val == 1){
        return 1;
    }
    return val + recursion(val-1);
}