Java 基础语法介绍

Java 基础语法介绍

数据(常量值),变量,数据类型

  • 数据的分类以及对应的存储类型。

运算符

  • 对存储的数据进行指定的运算。

语句

  • 可以控制程序执行的流程。

方法

  • 可以自定义功能,提高代码的复用性。

常量值分类

汇总

数据类型的分类与特点

类型

大小

最大存储范围

byte

1个字节(8位)

最大存储数据量是255,存放的数据范围是-128~127之间

short

2个字节(16位)

最大数据存储量是65536,数据范围是-32768~32767之间

int

4个字节(32位)

最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1

long

8个字节(64位)

最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

float

4个字节(32位)

数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F

double

8个字节(64位)

最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

char

2个字节(16位)

存储Unicode码,用单引号赋值。

boolean

1,0

只有true和false两个取值

char类型是如何存储的?

其实char类型在运行时也是整数。

通过键盘录入获取用户数据

数据类型的转换

自动类型转换(隐式类型转换)

强制类型转换(显示类型转换)

类型转换的原因? 什么时候要使用强制类型转换?

提示:

  1. 所有的整数默认都是 int 类型,小数默认都是 double 类型。

你觉得哪句代码编译会有问题?为什么?(了解Java的运算过程)

 

short  s = 3;

s = s + 4;  不成立,只针对s=s+4,因为s+4中的s是不确定数,所以不成立。

除非强制定义s=(short)(s+3)

//4+3//编译器会检查数据是否在short范围之内。如果在,会在自动转换并赋值给short类型的变量。
            //如果编译器的检查不确定,就会报错。

byte b1 = 3;

byte b2 = 4;

byte b = b1 + b2;

同上,思考一下?

要问集

序号

需要掌握的核心问题

答案

1.

数据类型一共多少种?

 

2.

性别,你准备用什么数据类型存储?

 

3. 

定义变量作用是什么?

 

4. 

intdouble作为默认类型是什么意思?

 

5. 

你是如何理解码表的?

 

6. 

类型转换有那两种?

 

7.

什么情况下会发生类型转换?

 

8.

short  s = 3;s = s + 4;错误的原因?

 

9.

 

 

10.

 

 

运算符

算术运算符

  • +(加法和连接) - * / %(取余) ++  --

赋值运算符

  • = ,+=,-=,*= ,/=,%=

关系运算符(比较运算符)

  • ==,!=,>,<,>=,<= ,! (非)

逻辑运算符(条件运算符)

  • && (与),||(或) ,? :(三元运算符)

位运算符

  • &,|,^(异或),~ (取反)<<,>>,>>>(无符号右移)
  1. 算术运算符

思考?

int x = 3150;

x = x /1000 *1000 结果是什么?为什么?(3,原因是默认为int,自动取整)

 

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台 分析:

①:使用Scanner键盘录入一个三位数

②:个位的计算:数值 % 10     123 除以 10(商12,余数为3)

③:十位的计算:数值 / 10 % 10     123 除以 10 (商12,余数为3,整数相除只能得到整数)     12 除以 10 (商1,余数为2)

④:百位的计算:数值 / 100     123 / 100 (123 / 100 得到1)

package test;

import java.util.Scanner;

public class Test01_Operate {
    public static void main(String[] args) {
        /*
        需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
        分析:
        就是把一个三位数的个位 十位,百位的数值取出来。

        思路:
        1. 键盘录入没问题。Scanner  sc.nextInt();
        2. 咋获取个位呢?%10 就可以了。
        3. 咋获取十位呢?发现%10可以取个位。如果把十位变成个位再%10就可以了。
        十位怎么变个位呢?除以10就哦了。
        4. 咋获取百位呢?继续以上步骤接着干也没问题。/10/10%10
        也可以直接/100 因为百位是最高位。

         */
        Scanner sc  = new Scanner(System.in);

        //用一个变量存储要操作的三位数。
        int number = sc.nextInt();

        //获取个位。
        int x = number % 10;

        //获取十位
        int y = number / 10 % 10;

        //获取百位
        int z = number / 100;

        System.out.println("个位是:"+x+",十位是:"+y+",百位是:"+z);

//        System.out.println(415 / 10 % 10);



        //距离1970年1月1日0时0分0秒的毫秒值。 1秒 = 1000毫秒。1分=60秒。
        //long timeMillis = System.currentTimeMillis();






    }
}

int x = 4,y;

y = ++x ;

y = ? x = ?(理解运算过程,推荐不用电脑计算,自己算)

 

int a = 4, b;

b = a++;

b = ? a= ?(理解运算过程,推荐不用电脑计算,自己算)

赋值运算符

  • 符号:

= , +=, -=, *=, /=, %=

  • 示例:

int a,b,c;    a=b=c =3; int a = 3;    

a+=5;

等同运算

a=a+5;

左边和右边的运算结果赋值给左边

提问: int x = 4; x *= 3+2; 结果是?

思考?

short s = 3;  

s = s + 2;

s += 2; 有什么区别?

 

关系运算符(比较运算符)

==,!=,>,<,>=,<= ,! (非)

关系运算符,运算完结果是boolean类型。

 

逻辑运算符(条件运算符)

&& (与),||(或) ,? :(三元运算符)

与,或都是用来连接boolean型表达式的,具有“短路”的特点。

&& : 只有两边的表达式都有为true时,结果为true。当左边表达式为false时,右边不执行,这就是“短路”。

|| : 只有两边都有为false时,结果为false,当左边为true时,右边不执行。这就是“短路”。

条件表达式?表达式1:表达式2 ;

 

位运算符

&,|,^(异或),~ (取反)<<,>>,>>>(无符号右移)

因为开发中,并不常用。做了解掌握。 演示,这些符号的基本用法。

Bitwise and Bit Shift Operators 位和位移位运算符 The Java programming language also provides operators that perform bitwise and bit shift operations on integral types. The operators discussed in this section are less commonly used. Therefore, their coverage is brief; the intent is to simply make you aware that these operators exist.

Java编程语言还提供了对整数类型执行按位和位移位操作的运算符。本节中讨论的运算符不太常用。因此,他们的报道是简短的;其目的只是让您意识到这些操作符的存在。

猜猜这些名词是什么意思?

  1. 一元运算符(一目运算符)

请举例:5+6   

  1. 二元运算符(二目运算符)

请举例:a+b

  1. 三元运算符(三目运算符)

请举例:

package demo;

public class Demo07_Operate {
    public static void main(String[] args) {

        /*

        逻辑运算符。
        && 与  || 或  短路  & |
         */


        int x = 2;
//        System.out.println(x>3 && x<6);
//        System.out.println(x<3 || x>8);

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

      //  System.out.println(4&7);
        /*
        0000 0100
        0000 0111
       -----------
        0000 1011


         */

    }
}

练习

程序里面的每一段程序我都注释了,用的时候改一下就可以运行

package demo;

public class demo_text01 {
    public static void main(String[] args) {

//int x=5,y=10; x<y结果?x>=y的结果?
//        int x=5;
//        int y=10;
//        System.out.println(x<y);
//        System.out.println(x>=y);

//        int x=2;
//        int y=(++x)*3;
//        System.out.println(x+","+y);

//        int x=2;
//        int y = (x++) * 3;
//        System.out.println(x+","+y);

//        int x = 3,y=5;
//        boolean a = x > y && x++ == y--;
//        System.out.println(a);


//         int x=3,y=5;
//         boolean a=x++==--y&&x<y;
//         System.out.println(a);

//        int x = 3,y=5;
//        boolean a = ++x==--y ;
//        boolean b =  x++ == y--;
//        boolean c = a && b;
//        System.out.println(a+","+b+","+c);

//        int x=3;
//        int y=(x++)+(++x)*2+(x++)+x;
//        System.out.println(y);

    }

}

代码阅读练习

程序能否编译通过?如果能,运行结果是什么?如果不能,原因是什么?

public class Demo01 {    

         public static void main(String[] args) {  

                int x = 4;        

                System.out.println(x > 4 ? 99.9 : 9);    

          }

}

根据自动过程,double为小数的默认类型。

package demo;

public class Demo08_Operate {
    public static void main(String[] args) {
        int x = 4;
        System.out.println(x > 4 ? 99.9 : 9);

//        double d = 8.9;
//        d = (d + 3);
//        System.out.println(d);

    }
}

要问集

序号

需要掌握的核心问题

答案

1.

int a = 2135;

a = a /1000; 结果是多少?为什么?

 

2.

%(取余)运算的使用场景?

 

3. 

int x = 3,y; y = x++; y = ? ,x = ? 为什么?

 

4. 

short s = 3;  

s = s + 2;  s += 2;这两句有什么区别?

 

5. 

逻辑运算符,短路的特点是什么?

 

6. 

 

 

7.

 

 

8.

 

 

9.

 

 

10.

 

 

主线图

红色框需要动手实操。

练习

1.获取两个数中较大的值。
2.获取三个数中的最大值。
package Demo;
//获取两个数中较大的值;
import java.util.Scanner;
public class demo03_Operate {
    public static void main(String[] args) {
//        long timeMillis = System.currentTimeMillis();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数=");
        int a = sc.nextInt();
        System.out.println("请输入第二个数=");
        int b = sc.nextInt();
        System.out.println(a>b?a:b);
        int e = a > b ? a : b;
        System.out.println("a和b的最大值为"+e);
        System.out.println("请输入数值c=");
        int c = sc.nextInt();
        System.out.println("a.b.c的最大值="+(c>e?c:e));


    }
}
3.将10000秒转成XX小时XX分钟。
4.将系统时间转成时分秒格式。
//距离1970年1月1日0时0分0秒的毫秒值。 1秒 = 1000毫秒。1分=60秒。
 long timeMillis = System.currentTimeMillis();
package Demo;

public class demo05_Operate {
    public static void main(String[] args) {
        long timeMillis = System.currentTimeMillis();
        long a =  timeMillis /1000;
        long b = a % 60;
        long c = a / 60%60;
        long d = a / 60/60%24;
        System.out.println(d+"小时"+c+"分钟"+b+"秒");

    }
}
5.练习3:
  计算闰年。
  什么是闰年?
  普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
  世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
package demo;

import java.util.Scanner;

public class demo01_leepyear {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入年份");
        int year = sc.nextInt();
        boolean a = year % 4==0;
        boolean b = year % 100!=0;
        boolean c = year % 400==0;
        boolean d = a && b||c ;


        System.out.println(d);
    }
}

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值