自学内容网 自学内容网

Java基础知识总结(44)

(1)Java数据类型分类 Java数据类型可分为整型、浮点型、布尔型、字符型 整型: byte(1字节):-2^7~2^7-1 short(2字节):-2^15~2^15-1 int(4字节):-2^31~2^31-1 long(8字节):-2^63~2^63-1 浮点型: double(4字节):有效位数6-7位 float(8字节):有效位数15-16位 布尔型: Boolean(Java中没有明确规定,实际上占1字节):true/false 字符型: char(2字节):0~65535 (2)变量的定义和初始化 变量定义前要尽量指定数据类型,这样可以增强代码的可阅读性 变量定义完毕以后我们需要对变量进行初始化,所谓初始化,其实就是在为变量开辟的内容空间中保存一份数据。 如:int age = 18; (3)进制转换 十进制 与 二进制的相互转换:通过”8421”码赋值的方式进行转换 十进制 与 八进制、十六进制的相互转换:可以将二进制作为媒介,先将数转换为二进制,然后划为对应位数,求得对应进制数 也可以通过编程的方式,使用Integer类中对应的方法完成转换 (4)浮点型数据类型需要注意的地方 十进制:这种形式就是简单的浮点数,如:3.14,7.1等浮点型必须包含一个小数点,否则会被当成int类型处理 科学计数法:例如2.23e2(即2.23x10^2) Java语言中浮点型默认的都是double类型的,如果要让Java把一个浮点数当做float类型处理,应该在这个浮点型后面添加后缀f或者F,如:float 3.14159f; 使用浮点型数据时的坑: double d1 = 0.1; System.out.print(d1/0);//输出 Infinity double d2 = -0.1; System.out.print(d2/0);//输出 -Infinity System.out.println(Math.sqrt(-2));//输出 NAN 所有的正无穷大都是相等的,所有的负无穷大都是相等的 NAN与任何数值都不相等,甚至和NAN都不相等 只有浮点数除以0才可以得到正无穷大或者负无穷大 如果一个整数除以0,则会抛出一个异常。 (5)字符型数据类型需要注意的地方 字符型通常用于表示单个字符,字符型值必须要用单引号括起来,Java中使用16位的Unicode字符集作为编码方式 注意: char ='' 与 char=' '是有区别的,前者为空字符串,后者代表空格; (6)数据类型转换 低类型-->高类型:自动转换 高类型-->低类型:强制转换 如: byte b1 = 5; int i1 = b1;

            int a2 = 10;
            byte b2 = (byte) a2;
(7)数据类型的自动提升
        当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升,Java自动提升规则如下:
            所有的byte、short、和char类型将被提升到int类型
                如:
                  byte b1 = 1;
                  short b2 = 127;
                  int b3 = b1+b2;//当byte和short类型进行运算时,结果会转换为int类型
                  System.out.println(b3);//128                      
            整个算术表达式的数据类型自动提升到表达式中最高等级操作数相同的类型
                如:
                  short s = 10;
                  int i = 20;
                  double d = 3.14;
                  double k = (double)(s + i) + d;
                注意:
                  short t=1;
                  t=t+1;//编译不通过,t为short类型,1则是int类型,此时表达式中包含了多个数据类型,表达式结果的数据类型则会发生自动提升,提升为最高等级操作数数据类型,也就是int,此时将一个int类型的值赋值给short类型的变量,需要进行类型强制转换
            
(8)Java运算符
      Java运算符主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、类型相关运算符
      重点理解和掌握了算术运算符、逻辑运算符、位运算符
(9)算术运算符
      算术运算符包括:加、减、乘、除、取余等等。
      注意:
        ++:自增运算,该运算符是一个单目运算符,也就是只能有1个操作数,但是它可以对整型或者浮点型变量进行运算,
        不能直接对数值进行运算,运算就既可以出现在操作数左边,也可以出现在操作数右边,并且不同的位置效果是不一样的,
        ++i,则先把操作数加1,然后再使用;i++,则先使用操作数,再进行加1
(10)逻辑运算符
      正数的原码、补码、反码都是它本身
      补码=反码+1
      &:按位与。同1为1
         如:
            5&10:
            0000 0101 5 
            0000 1010 10
            --------------

 0000 0000 0 |:按位或。有1则1 ~:按位非。1变0,0变1 如: 0000 1010 10 1111 0101 补码 1111 0100 反码  1000 1011 原码 -11 ^:按位异或。相同为0,不同为1

      <<:左移运算符。
                      如:5<<2
            0000 0101 5
            0001 0100 20
         等价于 5*2^2
      >>:右移运算符
         如:6>>1
            0000 0110 6
            0000 0011 3
         等价于 6/(2^1)
      >>>:无符号右移运算符

(11)逻辑运算符 &&:与,左右两个操作数都是true才会返回true,否则返回false 如果左右两边是表达式,如果第一个表达式就返回false,则第二个表达式并不进行运算 如: int i = 0,j=0; if(i==0 && i++>2) { System.out.println("123"); } System.out.println(i);//1

            if(j!=0 && j++>2) {
                System.out.println("123");
            }
            System.out.println(j);//0
     &:不短路与,无论第一个表达式的结果是true还是false,第二个表达式都会进行运算。
     ||:或,两个操作数只要有一个为true,就可以返回true,否则返回false
         如果第一个表达式返回值为true,则第二个表达式不进行运算
         如:
            int i = 0,j=0;
            if(i == 0 || i++>2 ) {
                System.out.println("123");
            }
            System.out.println(i);//123
    
            if(j!=0 || j++>2) {
                System.out.println("123");
            }
            System.out.println(j);//0
     |:不短路或,作用于||相同,无论第一个表达式结果如何,第二个表达式都会进行运算。
     !:非,只需要一个操作数,如果操作数为true,则返回false,如果操作数为false,则返回true。
     ^:异或,当两个操作数不同时返回为true,如果两个操作数相同的返回false。
(12) 三目运算符
     如:
       int a = (5>3)?1:0;
       根据上面的表达式5赋值扩展运算符
(13)赋值运算符
    +=:对于x+=y,等价于x = x+y。
    -=:对于x-=y,等价于x = x-y。
    *=:对于x*=y,等价于x=x*y。
    /=:对于x/=y,等价于x=x/y。
    %=:对于x%=y,等价于x = x%y。
    &=:对于x&=y,等价于x=x&y。
    |=:对于x|=y,等价于x=x|y。
    ^=:对于x^=y,等价于x=x^y。
    <<=:对于x<<=y,等价于x=x<<y。
    >>=:对于x>>=y,等价于x=x>>y。
    >>>=:对于x>>>=y,等价于x=x>>>y。>3结果为true,此时返回1,否则返回0;
(14)运算符优先级
      Java中大部分运算符都是从左向右结合的,只有个别运算符从右向走结合,例如:单目运算符、赋值运算符、三目运算符。
        如:
         int i1=1;
         int s=2;
         int x = i1++ + s;
         int y = i1 + ++s;
         System.out.println(x);//3
         System.out.println(y);//5
(15)流程控制
      顺序结构:代码自上而下执行。
      分支结构:对多种可能出现的情况进行判断:单分支,双分支,多分支
         if 单分支
​
            if(逻辑表达式){
                //代码
            }
​
         if 双分支
​
            if(逻辑表达式){
                //逻辑表达式结果为true,执行此处的代码
            }else{
                //逻辑表达式不成立,则执行此处的代码
            }
​
         if多分支
​
            if(逻辑表达式){
            }else if(逻辑表达式){    
            }else if(逻辑表达式){
            }else{
            }
​
      循环结构:同一段代码片段多次执行

今天没有学会什么? 对短路与和短路或的逻辑判断相关知识的掌握不够熟练,需要加强理解和掌握 对运算符优先级的掌握有待进一步练习 对于细小知识点需要进一步加深印象 心得体会? 通过今天的学习,在原有的基础上学习了更多Java基础知识,大部分知识理解掌握的不错,但在部分问题上还缺乏练习和积累,需要继续练习。 课后练习

  1. 请将101转换成二进制,并将二进制的前3位替换为1,并求出原码 00000000 00000000 00000000 01100101 11100000 00000000 00000000 01100101 补码

11100000 00000000 00000000 01100100 反码
10011111 11111111 11111111 10011011 原码
  1. 请输入一个年份,并判断是否是闰年 package cn.bytecollege;

    import java.util.Scanner;

    public class LeapYear {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    ​
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份:");
        long year = scanner.nextLong();
        scanner.close();
        if(year % 4 == 0 &&  year % 100 != 0 || year % 400 == 0) {
            System.out.println(year+"年是闰年");
        }else {
            System.out.println(year+"年不是闰年");
        }
    ​
    }

    }

  2. 请输入一个数,判断是否是质数 package cn.bytecollege;

    import java.util.Scanner;

    public class PrimeNumber { public static boolean isPrime(int num) { if(num<=3) { return num>1; } for(int i = 2 ;i<Math.sqrt(num);i++) { if(num % i == 0) { return false; } } return true; }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    ​
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字:");
        int num = scanner.nextInt();
        scanner.close();
        if(isPrime(num)) {
            System.out.println(num+"是质数");
        }else {
            System.out.println(num+"不是质数");
        }
    ​
    }

    }


原文地址:https://blog.csdn.net/weixin_45804384/article/details/137482370

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!