zoukankan      html  css  js  c++  java
  • JavaSE学习总结第03天_Java基础语法2

     

    03.01 数据类型中补充的几个小问题

    1:在定义Long或者Float类型变量的时候,要加L或者f。

      整数默认是int类型,浮点数默认是double。

      byte,short在定义的时候,他们接收的其实是一个int类型的值。 

    2:数据类型转换之默认转换:byte,short,char→int→long→float→double

       为什么占用8个字节的long默认转换为4个字节的float?

       A:它们底层的存储结构不同。

       B:float表示的数据范围比long的范围要大

          long:2^63-1

          float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1

    3:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

       可以。因为java语言中的字符占用两个字节。Java语言采用的是Unicode编码。

    03.02 算术运算符的基本用法

    运算符:对常量和变量进行操作的符号称为运算符

    运算符分为:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符6种

    算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取余或取模,两个数相除的余数)、+(连接符)、++(自增)、--(自减)

    例:

    1 int x = 3;
    2 int y = 4;
    3 System.out.println(x + y);  //7
    4 System.out.println(x - y);  //-1
    5 System.out.println(x * y);  //12
    6 System.out.println(x / y);  //0,/获取的是除法操作的商
    7 System.out.println(x % y);  //3,%获取的是除法操作的余数

    注意:整数相除只能得到整数,如果想得到小数,只需把操作的数据中的任意的一个数据变为浮点数即可

    如:System.out.println(x * 1.0 / y);  //0.75

    03.03 算术运算符++和--的用法

    例1:单独使用时

    1 int x = 3;
    2 int y = 4;
    3 System.out.println("x="+x+",y="+y);  //x=3,y=4
    4 x++;
    5 --y;
    6 System.out.println("x="+x+",y="+y);  //x=4,y=3

    单独使用时放在操作数据的前面和后面效果一样。也就是a++或者++a效果一样。

    例2:参与操作时

    1 int x = 3;
    2 int y = 4;
    3 int a = x++;
    4 int b = --y;
    5 System.out.println("x="+x+",y="+y);  //x=4,y=3
    6 System.out.println("a="+a+",b="+b);  //a=3,b=3

    参与操作时放在操作数的前面:先自增或者自减,再参与操作

               放在操作数的后面:先参与操作,再自增或者自减

    例3:特殊情况

    1 int i = 3;
    2 i = i++;
    3 System.out.println("i="+i);  //i=3

    i=i++,先进行i++运算,此时虚拟机会开辟新的空间临时存储i的值,然后进行i++的运算,将运算结果4赋给i,i=4,此时i++运算完成,然后将临时存储的i的值又赋给i,i=3

    03.04 算术运算符++和--的练习

    1.计算a、b、c的值

     1 int a = 10;
     2 int b = 10;
     3 int c = 10;
     4 a = b++;
     5 c = --a;
     6 b = ++a;
     7 a = c--;
     8 System.out.println("a="+a);  //a=9
     9 System.out.println("b="+b);  //b=10
    10 System.out.println("c="+c);  //c=8

    2.计算x、y的值

    1 int x = 4;
    2 int y = (x++)+(++x)+(x*10);  //4+6+60
    3 System.out.println("x="+x);  //x=6
    4 System.out.println("y="+y);  //y=70

    03.05 算术运算符+的多种用法

    +的用法:加法、正号、字符串连接符

    例:

    1 System.out.println(3 + 4);  //加法,7
    2 System.out.println(+5);  //正号,5
    3 System.out.println("hello"+'a'+1);  //字符串连接符,helloa1

    03.06 赋值运算符的基本用法

    基本的赋值运算符[=(赋值)]

    扩展的赋值运算符[+=(左加)、-=(左减)、*=(左乘)、/=(左除)、%=(左取模)]

    例:

    1 int y = 10;
    2 y += 20;  //相当于y = y + 20;
    3 System.out.println("y="+y);  //y=30

    03.07 赋值运算符的面试题

    面试题:

    short s = 1,s = s+1; 

    short s = 1,s += 1;

    两句代码是否有问题?

    short s = 1,s = s+1;有问题,s+1的结果为int型,不能赋值给short 型的s

    short s = 1,s += 1;没有问题,s += 1隐含了一个强制类型转换,相当于 s = (short)(s+1);扩展的赋值运算符都有这个特点

    03.08 比较运算符的基本用法及其注意事项

    比较运算符:==(相等)、!=(不等)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)

    注意:

    1.比较运算符运算完的结果必须是true或false

    2.比较运算符"=="不能写成"="

    03.09 逻辑运算符的基本用法

    逻辑运算符:&(与)、|(或)、^(异或)、!(非)、&&(双与)、||(双或)

    逻辑运算符用于连接两个boolean类型的表达式

     

    &(与)符号的运算规律:&运算的两边有一个是false结果就是false,只有两边都为true,结果才为true

    |(或)符号的运算规律:|运算的两边有一个是true结果就是true,只有两边都为false,结果才为false

    ^(异或)符号的运算规律:|运算的两边结果相同,结果为false,两边结果不同,结果为true

    !(非)符号的运算规律:判断事物的另一面,例:!true=false   !false=true

    03.10 逻辑运算符&&和&的区别

    &&(双与)符号的运算规律:与&(与)符号的运算规律相同

    ||(双或)符号的运算规律:与|(或)符号的运算规律相同

     

    &(单与)与&&(双与)的区别:

    &(单与),不管运算的左边的结果为true或false,都会运算右边的表达式的结果

    &&(双与),当运算符左边的结果为false时,不会运算右边表达式的值,因为最终结果为false

    |(单或)与||(双或)的区别:

    |(单或),不管运算的左边的结果为true或false,都会运算右边的表达式的结果

    ||(双或),当运算符左边的结果为true时,不会运算右边表达式的值,因为最终结果为true

    03.11 位运算符的基本用法1

    位运算符:&(与运算)、|(或运算)、^(异或运算)、~(反码)

    位运算是直接对二进制进行运算

    例:

     

    03.12 位异或运算符的特点

    特点:一个数异或同一个数两次,结果还是这个数

    03.13 位运算的面试题

    不使用第三方变量实现两个整数的互换

    方式1

    a = a ^ b;    

    b = a ^ b; // b = a ^ b ^ b = a;       

    a = a ^ b; // a = a ^ b ^ a = b;         

    方式2

    a = a + b;

    b = a - b; // b = a + b - b = a;

    a = a - b; // a = a + b - a = b;

    方式3 

    b = (a + b) - (a = b);

    03.14 位运算符的基本用法2及面试题

    位运算符:<<(左移)、>>(右移)、>>>(无符号右移)

    <<(左移):符号位不变,低位补零,每左移一位相当于乘以2

    >>(右移):低位溢出,符号位不变,并用符号位补溢出的高位,每右移一位相当于除以2

    >>>(无符号右移):低位溢出,高位补零

    例:

    面试题:用最有效率的方式计算2乘以8的结果

    2<<3

    03.15 三元运算符的基本用法

    格式:(条件表达式)?表达式1:表达式2;

    解释:条件表达式的结果为true,运算的结果是表达式1的值

          条件表达式的结果为false,运算的结果是表达式2的值

    例:

    1 int x = 0,y;
    2 y = (x > 1)?100:200;
    3 System.out.println("y="+y);  //y=200

    03.16 三元运算符的练习

    1.获取两个数中的最大值

    1 int x = 100;
    2 int y = 200;
    3 int max =(x > y)?x:y;
    4 System.out.println("max="+max); //max=200

    2.获取三个数中的最大值

    1 int x = 100;
    2 int y = 300;
    3 int z = 200;
    4 int temp = (x > y)? x : y;
    5 int max =(temp > z)?temp : z;
    6 System.out.println("max="+max);  //max=300

    03.17 键盘录入的基本格式讲解

    键盘录入数据概述:我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,准备把数据改进为键盘录入,提高程序的灵活性。

    键盘录入数据的步骤:

    1.导包:(位置放到class定义的上面)import java.util.Scanner;

    2.创建对象:Scanner sc = new Scanner(System.in);

    3.接收数据:int x = sc.nextInt();

    03.18 键盘录入的练习1

    1.键盘录入两个数据,求和

     1 import java.util.Scanner;
     2 class Demo
     3 {
     4    public static void main(String[] args)
     5    {
     6       Scanner sc = new Scanner(System.in);
     7       System.out.println("请输入第1个数:");
     8       int x = sc.nextInt();
     9       System.out.println("请输入第2个数:");
    10       int y = sc.nextInt();
    11       System.out.println(x+"+"+y+"="+(x + y));
    12    }
    13 }

    运行结果:

    请输入第1个数:
    23
    请输入第2个数:
    45
    23+45=68

    2.键盘录入两个数据,求最大值

     1 import java.util.Scanner;
     2 class Demo
     3 {
     4    public static void main(String[] args)
     5    {
     6       Scanner sc = new Scanner(System.in);
     7       System.out.println("请输入第1个数:");
     8       int x = sc.nextInt();
     9       System.out.println("请输入第2个数:");
    10       int y = sc.nextInt();
    11       int max = (x > y) ? x : y;
    12       System.out.println("最大数是:"+max);
    13    }
    14 }

     运行结果:

    请输入第1个数:
    45
    请输入第2个数:
    32
    最大数是:45

    03.19 键盘录入的练习2

    键盘录入三个数据,求最大值

     1 import java.util.Scanner;
     2 class Demo
     3 {
     4    public static void main(String[] args)
     5    {
     6       Scanner sc = new Scanner(System.in);
     7       System.out.println("请输入第1个数:");
     8       int x = sc.nextInt();
     9       System.out.println("请输入第2个数:");
    10       int y = sc.nextInt();
    11       System.out.println("请输入第3个数:");
    12       int z = sc.nextInt();
    13       int temp = (x > y) ? x : y;
    14       int max = (temp > z) ? temp : z;
    15       System.out.println("最大数是:"+max);
    16    }
    17 }

    运行结果:

    请输入第1个数:
    34
    请输入第2个数:
    6
    请输入第3个数:
    4
    最大数是:34

    03.20 顺序结构语句

    流程控制语句分类:顺序结构、选择结构、循环结构

    顺序结构概述:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

    总的来说:写在前面的先执行,写在后面的后执行

    流程图:

    03.21 选择结构if语句格式1

    选择结构也被称为分支结构。

    选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。

    Java语言提供了两种选择结构语句

    if语句和switch语句

     

    if语句第1种格式:

    if(关系表达式)

    {

       语句体;

    }

    执行流程:首先判断关系表达式看其结果是true还是false,如果是true就执行语句体,如果是false就不执行语句体

    流程图:

    例:

    1 int x = 3;
    2 if(x > 1)
    3 {
    4    System.out.println("yes");
    5 }
    6 System.out.println("over");

    03.22 选择结构if语句注意事项

    注意事项:

    1.关系表达式无论简单还是复杂,结果必须是boolean类型

    2.当if控制的语句是单条语句时,if的控制范围{ }可以省略,当if的{ }省略时,if只能控制离他最近的单条语句

    当if控制的语句不是单条语句时,if的{ }不能省略。建议永远不要省略。

    3.如果在if(条件表达式)后加了;表示没有执行语句的判断结构,if不会控制下面的语句,无论if的条件是true还是false,下面的语句都会执行

    03.23 选择结构if语句格式2

    if语句第1种格式:

    if(关系表达式)

    {

       语句体1;

    }

    else

    {

       语句体2;

    }

    执行流程:首先判断关系表达式看其结果是true还是false,如果是true就执行语句体1,如果是false就执行语句体2

    流程图:

    例:

     1 int a = 3,b;
     2 if(a > 1)
     3 {
     4    b = 100;
     5 }
     6 else
     7 {
     8    b = 200;
     9 }
    10 System.out.println("b="+b); //b=100

    03.24 选择结构if语句格式2的练习

    判断一个数是奇数还是偶数

    1 int a = 23;
    2 if(a % 2 == 0)
    3 {
    4    System.out.println(a+"是偶数");
    5 }
    6 else
    7 {
    8    System.out.println(a+"是奇数");
    9 }

    运行结果:23是奇数

    03.25 if语句的格式2和三元的相互转换问题

    三元运算符其实就是if else的简写格式,if else 是通用格式

    当if else运算后有一个具体的结果时,可以简化写成三元运算符

    当if else语句控制的语句体是一条输出语句的时候,就不能写成三元运算符。因为三元运算符是一个运算符,必须要求有一个结果返回。而输出语句却不能作为一个返回结果。

    03.26 选择结构if语句格式3

    if语句第3种格式:

    if(关系表达式1)

    {

       语句体1;

    }

    else  if(关系表达式2)

    {

       语句体2;

    }

    ......

    else

    {

       语句体n+1;

    }

    执行流程

    首先判断关系表达式1看其结果是true还是false

    如果是true就执行语句体1

    如果是false就继续判断关系表达式2看其结果是true还是false

    如果是true就执行语句体2

    如果是false就继续判断关系表达式...看其结果是true还是false

    ...

    如果没有任何关系表达式为true,就执行语句体n+1。

    流程图:

    例:

     1 import java.util.Scanner;
     2 class Demo
     3 {
     4    public static void main(String[] args)
     5    {
     6       Scanner sc = new Scanner(System.in);
     7       System.out.println("请输入一个成绩:");
     8       int score = sc.nextInt();
     9       if(score < 0 || score > 100)
    10       {
    11          System.out.println("数据错误");
    12       }
    13       else if(score >= 90)
    14       {
    15          System.out.println(score+"对应等级A");
    16       }
    17       else if(score >= 80)
    18       {
    19          System.out.println(score+"对应等级B");
    20       }
    21       else if(score >= 70)
    22       {
    23          System.out.println(score+"对应等级C");
    24       }
    25       else if(score >= 60)
    26       {
    27          System.out.println(score+"对应等级D");
    28       }
    29       else
    30       {
    31          System.out.println(score+"对应等级E");
    32       }
    33    }
    34 }

    03.27 选择结构if语句格式3的练习

    键盘录入x的值,计算出y的并输出

    x和y的关系满足如下:

    x>=3      y = 2x + 1;

    -1<=x<3    y = 2x;

    x<=-1    y = 2x - 1;

     1 import java.util.Scanner;
     2 class Demo
     3 {
     4    public static void main(String[] args)
     5    {
     6       int y = 0;
     7       Scanner sc = new Scanner(System.in);
     8       System.out.println("请输入一个数:");
     9       int x = sc.nextInt();
    10       if(x >= 3)
    11       {
    12          y = 2 * x + 1;
    13          System.out.println("y=2*"+x+"+1="+y);
    14       }
    15       else if(x >= -1 && x < 3)
    16       {
    17          y = 2 * x;
    18          System.out.println("y=2*"+x+"="+y);
    19       }
    20       else
    21       {
    22          y = 2 * x - 1;
    23          System.out.println("y=2*"+x+"-1="+y);
    24       }
    25    }
    26 }

    03.28 选择结构if语句格式3的练习

    键盘录入月份的值,输出对应的季节

    春(3,4,5)、夏(6,7,8)、秋(9,10,11)、冬(12,1,2)

     1 import java.util.Scanner;
     2 class Demo
     3 {
     4    public static void main(String[] args)
     5    {
     6       Scanner sc = new Scanner(System.in);
     7       System.out.println("请输入一个月份:");
     8       int month = sc.nextInt();
     9       if(month > 12 || month < 1)
    10       {
    11          System.out.println("输入的月份有误");
    12       }
    13       else if(month >= 3 && month <= 5)
    14       {
    15          System.out.println(month+"月对应春季");
    16       }
    17       else if(month >= 6 && month <= 8)
    18       {
    19          System.out.println(month+"月对应夏季");
    20       }
    21       else if(month >= 9 && month <= 11)
    22       {
    23          System.out.println(month+"月对应秋季");
    24       }
    25       else
    26       {
    27          System.out.println(month+"月对应冬季");
    28       }
    29    }
    30 }

     if语句的使用场景:

    1.针对表达式是一个boolean类型的判断

    2.针对一个范围的判断

    03.29 选择结构if语句的嵌套使用

    例:

     1 int a = 10;
     2 int b = 30;
     3 int c = 20;
     4 int max;
     5 if(a > b)
     6 {
     7      if(a > c)
     8      {
     9         max = a;
    10      }
    11      else
    12      {
    13          max = c;
    14      }
    15 }
    16 else
    17 {
    18    if(b > c)
    19    {
    20        max = b;
    21    }
    22    else
    23    {
    24       max = c;
    25    }
    26 }
    27 System.out.println("max:"+max);
  • 相关阅读:
    java的注解
    java的反射
    Java的垃圾回收机制
    Java的jvm上的内存位置的分配
    Java的Junit与debug模式入门
    三、FreeMarker 模版开发指南 第三章 模版
    【CodeForces】[698A]Vacations
    【CodeForces】[629B]Far Relative’s Problem
    【POJ】[1328]Radar Installation
    【杭电】[1789]Doing Homework again
  • 原文地址:https://www.cnblogs.com/zhy7201/p/4466030.html
Copyright © 2011-2022 走看看