0


第二章 java基本语法

2.1 java程序构成

image-20201224173435095

image-20201224173456498

image-20201225093048267

2.2 程序注释

  • // 单行注释
  • /* 多行注释 */
  • /** * 文档注释,文件注释,类注释,方法注释,属性注释,语句代码行相关注释 * */
package org;import java.util.Date;/**
 * @author Administrator  alt+shift+j文档注释   ctrl + /行注释 ctrl+shift+/ 块注释
 *
 */publicclassDemo{/**
     * <p>描述:此处main方法</p>
     * @param args
     */publicstaticvoidmain(String[] args){/*
         * int i = 30; System.out.println(i);
         */
        Date d =newDate();}}
  • javadoc.exe 程序用来生成项目或java程序类的注释api手册

image-20201225095533246

image-20201225112858755

image-20201225113049946

2.3 标识符

标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。

标识符是由字母 数字 下滑线 $组成的,不能数字开头,不能使用空格和特殊的符号,如下红框内的是非法

image-20201225135009580

2.4 关键字 保留字

保留字(reserved word),指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。
保留字包括关键字和未使用的保留字。

关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。一般出现这种情况可能是由于考虑扩展性。例如,Javascript有一些未来保留字,如abstract、double、goto等等。

java编程中有没有goto语句?

image-20201225140642278

image-20201225141344492
关键字****含义abstract表明类或者成员方法具有抽象属性assert断言,用来进行程序调试boolean基本数据类型之一,声明布尔类型的关键字break提前跳出一个块byte基本数据类型之一,字节类型case用在switch语句之中,表示其中的一个分支catch用在异常处理中,用来捕捉异常char基本数据类型之一,字符类型class声明一个类const保留关键字,没有具体含义continue回到一个块的开始处default默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现do用在do-while循环结构中double基本数据类型之一,双精度浮点数类型else用在条件语句中,表明当条件不成立时的分支enum枚举extends表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块float基本数据类型之一,单精度浮点数类型for一种循环结构的引导词goto保留关键字,没有具体含义if条件语句的引导词implements表明一个类实现了给定的接口import表明要访问指定的类或包instanceof用来测试一个对象是否是指定类型的实例对象int基本数据类型之一,整数类型interface接口long基本数据类型之一,长整数类型native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的new用来创建新实例对象package包private一种访问控制方式:私用模式protected一种访问控制方式:保护模式public一种访问控制方式:共用模式return从成员方法中返回数据short基本数据类型之一,短整数类型static表明具有静态属性strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范super表明当前对象的父类型的引用或者父类型的构造方法switch分支语句结构的引导词synchronized表明一段代码需要同步执行this指向当前实例对象的引用throw抛出一个异常throws声明在当前定义的成员方法中所有需要抛出的异常transient声明不用序列化的成员域try尝试一个可能抛出异常的程序块void声明当前成员方法没有返回值volatile表明两个或者多个变量必须同步地发生变化varjava10新增的关键字,用来推断类型 var i = 20;while用在循环结构中

2.5 变量

变量:是指值在程序运行期间可以被改变的量。变量用于储存信息。它指向内存的某个单元,而且指明了这块内存有多大。java是强类型,变量必须先声明初始化才可以使用。java程序中,变量名是区分大小写。

  • 变量作用域

image-20201225152800294

  • java是严格区分大小写的

(1)类,接口和枚举或对象是首字母大小,如果有多个单词第二个单词首字母大写:User.java UserBook.java

System Scanner Date String 。

(2)变量名,常量名严格区分大小写 java中常量名要求全部大写 AGE。(3)方法名一般是

setXxx getXxx isXxxx getUserName() 动词开头,从第二个单词开始使用大写。

2.6 常量

​ 指在程序执行期间其值不能发生变化的数据。例如数学中的π= 3.1415……又如:整数123,小数1.23,字符’A’,布尔常量 true、false等,程序开发中,常量名一般规则全部大写,声明常量时必须赋值,以后只能使用,不能再赋值。

finalint AGE =50;  
System.out.println(Math.PI);

2.7 数据类型

(1)基本数据类型 byte short int long float double char boolean (8大类型)

​ 1、整型 byte short int long

​ 2、浮点型 float double

​ 3、字符型 char a = ‘y’;

​ 4、布尔 boolean

(2)引用数据类型(对象 类 接口 数组)

image-20201225155716412

package cn.webrx;publicclassVar4{publicstaticvoidmain(String[] args){int a =18;int b =30;//print() println() printf()格式化输出
        System.out.print(a);
        System.out.println(b);
        System.out.printf("%d + %d = %d \n", a, b, a + b);
        System.out.println(a +" + "+ b +" = "+(a+b));}}/*
    //f d l
    //.5f
    //.68d
    //21424L
    
byte short int long float double boolean char

boolean f = true;

char y = ‘c’;

float f1 = .5f;    

double f2 = 10.5d;

long mm = 10;
*/

2.8 数据类型转换

  • 强制转换
int i =30;short n =(short)i;package cn;publicclassVar2{publicstaticvoidmain(String[] args){int a =5;
        a +=1;
        a = a +1;
        System.out.println(a);//7short b =(short) a;//7
        b +=1;//b 8 (+=可以实现自动的类型转换)
        a = b +1;//a = 9  b=8  (b+1 结果类型为int 此)
        System.out.println(a);//9
        System.out.println(b);//8}}
  • 自动隐式转换
自动类型转换
 (也叫隐式类型转换)由小到大 
    (byte,short,char)--int--long--float—double。 
注:这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。
    例:short s=10;
             int i=s;      //将short类型的变量向int类型的变量        //赋值时,(从小到大)实现了自动转换

        注:char c=’A’; 65
        int i=c;(这时会将’A’ 对应的ASCII码值赋值给i)

2.9 运算符表达式

运算符:是一种特殊符号,用以表示数据的运算、赋值和比较。

表达式:使用运算符将运算数据连接起来的符合Java语法规则的式子。

int i = 20*30;

(1)、算术运算符

+ - * / % ++ --
int i =5;++i;//自身加1
i++;
System.out.println(--i);//自身减1 如果++ -- 在变量前,先执行再使用,如果在后,先使用再自执行。

(2)、赋值运算符

= += -= *= /= %=
int i =3;
i++;
i+=5;//相当于 i = i + 5;int c = i-=2;
System.out.println(--c);

image-20201228144107635

package cn;publicclassVar5{publicstaticvoidmain(String[] args){int i =3;
        i++;
        i +=5;// 相当于 i = i + 5;int c = i -=2;
        System.out.println(--c);}}package cn;publicclassHello{publicstaticvoidmain(String[] args){
        System.out.println("Hello World");

        System.out.println("*".repeat(8));int i =3;
        i +=2;
        i = i +2;
        System.out.println(i);short a =3;
        a +=2;
        a =(short)(a +2);
        System.out.println(a);}}

(3)、比较运算符

​ java == != > >= < <= instanceof

== 和 = 结果不一样,==是判断等不等,=是赋值

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注2:比较运算符“==”不能误写成“=” ,切记!切记!

image-20201228164020739

package cn;import java.util.Calendar;import java.util.Locale;publicclassVar5{publicstaticvoidmain(String[] args){//分时问候//var d = new Date();//System.out.println(d.getHours());//16
        
        Calendar c =  Calendar.getInstance(Locale.CHINA);int hour = c.get(Calendar.HOUR_OF_DAY);//推荐写法//int hour = c.get(11);//int hour = c.get(0xb); //0x 16进制  a 10 b 11 c 12 f 15//if语句是一分支语句,if(hour>=12){//true
            System.out.println("下午好");}else{
            System.out.println("上午好");}}}

(4)、逻辑运算符

&&逻辑与 ||逻辑域 !逻辑非

image-20201228164056822

&
|
^
!
&&
||
package cn;import java.util.Calendar;import java.util.Locale;publicclassVar5{publicstaticvoidmain(String[] args){//分时问候//var d = new Date();//System.out.println(d.getHours());//16
        
        Calendar c =  Calendar.getInstance(Locale.CHINA);int hour = c.get(Calendar.HOUR_OF_DAY);//推荐写法//int hour = c.get(11);//int hour = c.get(0xb); //0x 16进制  a 10 b 11 c 12 f 15//if语句是一分支语句,//if(hour>=12) { //true//    System.out.println("下午好");//}else {//    System.out.println("上午好");//}//6 - 8 早  8-12 am 12-14 中午  14 - 18 下载 18-19 晚上19-23if(hour>=6&& hour<8){
            System.out.println("早上好");}elseif(hour>=8&& hour<12){
            System.out.println("上午好");}elseif(hour>=12&& hour<14){
            System.out.println("中午好");}elseif(hour>=14&& hour<18){
            System.out.println("下午好");}}}package cn;publicclassVar6{publicstaticvoidmain(String[] args){
        System.out.println(1==2);// false
        System.out.println(1!=2);// true
        System.out.println(!(1==2));// true// &&短路 &不支持短路int a =1;int b =2;if(a==b &++a == b){
            System.out.println("yes");}
        System.out.println(a);}}

java 日期工具类 Date Calendar类使用

package cn;import java.util.Calendar;import java.util.Date;publicclassDateTest{publicstaticvoidmain(String[] args){
        var d =newDate();//实例化日期对象
        System.out.println(d.toLocaleString());
        
        System.out.println(d.getTime());//时间戳 是一个long的整数
        System.out.println(System.currentTimeMillis());
        
        var c = Calendar.getInstance();
        System.out.println(c.getTime().getTime());//1609145876771 是数字,代表一个日期对象
        var d2 =newDate(1609145876771L);
        System.out.printf("%1$tF %1$tT \n",d2);}}

(5)、位运算符 >> <<

image-20201229135956872

image-20201229140014907

package cn;publicclassBin1{publicstaticvoidmain(String[] args){
        System.out.println(true&false);//逻辑与
        System.out.println(true&&false);//逻辑与 && 支持短路
        
        System.out.println(12&5);//4
        System.out.println(Integer.toBinaryString(12));//1100
        System.out.println(Integer.toBinaryString(5));//  0101  0100//参数是2进制输出是10进制
        System.out.println(0b100);//4
        System.out.println(0xff);//255//二进制 1  1  2  10}}
package cn;publicclassBin2{publicstaticvoidmain(String[] args){//~ & | >> << int a =12;
        System.out.println(Integer.toBinaryString(a));//1100int b =5;
        System.out.println(Integer.toBinaryString(b));//0101
        
        System.out.println(Integer.valueOf("1100",2));//12
        System.out.println(Integer.valueOf("0101",2));//5
        
        System.out.println(a&b);//4
        System.out.println(a|b);//13}}

image-20201229140934665

位移运算,实现IP地址和数字的转换

package cn;import java.net.InetAddress;import java.net.UnknownHostException;publicclassIpUtils{publicstaticvoidmain(String[] args)throws UnknownHostException {// 将ipv4 格式转换为long类型的数字
        String ip ="58.83.160.156";
        String[] ips = ip.split("\\.");// 字符串[58,83,160,156]long num =0;for(int i =0; i < ips.length; i++){
            num += Integer.parseInt(ips[i])* Math.pow(256, ips.length - i -1);}
        System.out.println(num);// 978559132 转换为ipv4字符串long nn =978559132L;byte[] bys =newbyte[]{(byte)(nn >>24),(byte)(nn >>16),(byte)(nn >>8),(byte) nn };
        System.out.println(InetAddress.getByAddress(bys).getHostAddress());}}

2.10 格式化

  • 输出 System.out.println(); System.out.print();

  • 输出错误信息以红色输出 System.err.println(“hello world”);

  • 格式化输出 System.out.printf();
    转 换 符说 明示 例%s字符串类型“mingrisoft”%c字符类型‘m’%b布尔类型true%d整数类型(十进制)99%x整数类型(十六进制)FF%o整数类型(八进制)77%f浮点类型99.99%a十六进制浮点类型FF.35AE%e指数类型9.38e+5%g通用浮点类型(f和e类型中较短的)%h散列码%%百分比类型%%n换行符%tx日期与时间类型(x代表不同的日期与时间转换符标 志说 明示 例结 果+为正数或者负数添加符号("%+d",15)+15−左对齐("%-5d",15)|15 |0数字前面补0("%04d", 99)0099空格在整数之前添加指定数量的空格("% 4d", 99)| 99|,以“,”对数字分组("%,f", 9999.99)9,999.990000(使用括号包含负数("%(f", -99.99)(99.990000)#如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0("%#x", 99)("%#o", 99)0x630143<格式化前一个转换符所描述的参数("%f和%❤️.2f", 99.45)99.450000和99.45$被格式化的参数索引("%1

         d
        
        
         ,
        
       
       
        d,%2
       
      
     d,s", 99,“abc”)99,abc
    
package cn;import java.net.UnknownHostException;import java.util.Date;import java.util.Locale;publicclassVar4{publicstaticvoidmain(String[] args)throws UnknownHostException {int a =5;int b =++a;
        System.out.println(++a *--b);// 35 //a =7 b=5
        System.out.println(a--* b);// 35 a=6 b = 5
        System.out.println(a--* b);// 30

        String name ="李四";int age =3;
        String addr ="河南省郑州市科学大道88号。";

        System.out.println("姓名:"+ name +",年龄:"+ age +"岁,家庭地址:"+ addr);

        System.out.println();
        System.out.print(3*3);
        System.err.println("hello");

        System.out.printf("姓名:%s,年龄:%02d岁,家庭地址:%s \n", name, age, addr);// %s String// %d 十进制整数整数

        System.out.printf("%n hello %n\n java \n");

        System.out.printf(" %.2f %.1f \n",3.15f,4.26d);
        System.out.printf(" %1$.1f  %1$.2f  %1$.3f \n",329.142872921f);

        Date d =newDate();
        System.out.printf("%tc%n%1$tF%n%1$tD%n%1$tF %1$tT \n", d);// String.format(addr, args); 格式化字符串并返回// System.out.printf(" \n",); 格式化字符串输出

        System.out.printf(Locale.CHINA,"%tp %1$tA \n", d);////格式化输出 2020年12月28日 14:28:30 星期一
        
        System.out.printf("%1$tY年%1$tm月%1$td日 %1$tT %1$tA\n",d);//2020年12月28日 14:30:18 星期一//System.out.println(d);//将十进制转换为16进制字符串并输出
        System.out.printf("%x \n",255);//ff
        System.out.printf("%X \n",255);//FF}}

2.11 作业

(1)、格式化输出如下信息

​ 2020年12月28日 14:30:18 星期一

​ 姓名:李四,年龄:03岁,家庭地址:河南省郑州市科学大道88号。

​ 20201228143018124

package ex;import java.util.Date;import java.util.Locale;publicclassEx1{publicstaticvoidmain(String[] args){
        var d =newDate();
        System.out.printf(Locale.CHINA,"%1$tY年%1$tm月%1$td日 %1$tT %1$tA ", d);
        System.out.println();
        System.out.printf("%1$tY%1$tm%1$td%1$tH%1$tM%1$tS%1$tL",d);
        System.out.println();
        System.out.println(d.getTime());
        String name ="张三丰";byte age =18;double money =8000.2471;
        String addr ="河南省郑州市科学大道88号";
        System.out.printf("姓名:%s,年龄:%d岁,金额:%.1f元,家庭地址:%s。 \n",name,age,money,addr);}}

(2)、利用if语句、java.util.Calendar实现分时问候

package ex;import java.util.Calendar;import java.util.Date;import java.util.Locale;publicclassEx2{publicstaticvoidmain(String[] args){
        var c = Calendar.getInstance();int h = c.get(Calendar.HOUR_OF_DAY);
        String info ="";if(h >=6&& h <8){
            info ="早上好";}elseif(h >=8&& h <12){
            info ="上午好";}elseif(h >=12&& h <14){
            info ="中午好";}elseif(h >=14&& h <18){
            info ="下午好";}elseif(h >=18&& h <22){
            info ="晚上好";}elseif(h >=22&& h <=23){
            info ="深夜";}else{
            info ="午夜凌晨";}
        System.out.println(info);}}

(3)、判断当前日期是不是闰年

package ex;import java.time.LocalDate;publicclassEx3{publicstaticvoidmain(String[] args){// 方法一int year =2020;if(year %4==0&& year %100!=0|| year %400==0){
            System.out.printf("%d 是闰年%n", year);}else{
            System.out.printf("%d 不是闰年是平年%n", year);}// 方法二,使用java8新技术 LocalDate 类
        var d2 = LocalDate.of(year,1,1);if(d2.isLeapYear()){
            System.out.printf("%d 是闰年%n", year);}else{
            System.out.printf("%d 不是闰年是平年%n", year);}}}

(4)、根据留言的时间戳,提示信息(刚刚,多少分钟前,多少小时前,多少天前,2020-12-10 10:20:30 留言)

package ex;import java.util.Date;import java.util.Locale;publicclassEx4{publicstaticvoidmain(String[] args){//long tt = System.currentTimeMillis();//留言的时间long tt =1609206876967L;//24 60 60 1000 
        var d1 =newDate(tt);
        String ds = String.format(Locale.CHINA,"%1$tY年%1$tm月%1$td日 %1$tT %1$tA ", d1);//System.out.println(ds);long nn = System.currentTimeMillis()- tt;//1000 * 60if(nn<1000*60){
            System.out.println("刚刚");}elseif(nn<1000*60*60){
            System.out.printf("%d分钟前",nn/(1000*60));}}}

(5)、计算一下两个日期之间的天数

package ex;import java.util.Calendar;import java.util.Date;import java.util.Scanner;publicclassEx5{publicstaticvoidmain(String[] args){// 计算两日期之间的天数// 键盘输入
        var sc =newScanner(System.in);
        System.out.print("请输入你出生的年份(xxxx xx xx):");int y =0, m =0, d =0;
        y = sc.nextInt();
        m = sc.nextInt();
        d = sc.nextInt();// 输入的是字符串,如何将字符串转换为日期对象

        var c = Calendar.getInstance();
        c.set(Calendar.YEAR, y);
        c.set(Calendar.MONTH, m -1);
        c.set(Calendar.DATE, d);long t1 = c.getTimeInMillis();//System.out.println(t1);//System.out.printf("%d年%d月%d日%n",y,m,d);long t2 = System.currentTimeMillis();//System.out.println(t2);long days =(t2-t1)/1000/60/60/24;
        var d3 =newDate(t2);
        System.out.printf("%s 到 %s 共有 %d 天。",String.format("%d年%d月%d日",y,m,d),String.format("%1$tY年%1$tm月%1$td日",d3),days);}}

(6)、实现IP地址和数字相互转换

package cn;import java.net.InetAddress;import java.net.UnknownHostException;publicclassIpUtils{publicstaticvoidmain(String[] args)throws UnknownHostException {// 将ipv4 格式转换为long类型的数字
        String ip ="58.83.160.156";
        String[] ips = ip.split("\\.");// 字符串[58,83,160,156]long num =0;for(int i =0; i < ips.length; i++){
            num += Integer.parseInt(ips[i])* Math.pow(256, ips.length - i -1);}
        System.out.println(num);// 978559132 转换为ipv4字符串long nn =978559132L;byte[] bys =newbyte[]{(byte)(nn >>24),(byte)(nn >>16),(byte)(nn >>8),(byte) nn };
        System.out.println(InetAddress.getByAddress(bys).getHostAddress());}}

本文转载自: https://blog.csdn.net/lianghecai52171314/article/details/123328000
版权归原作者 梁云亮 所有, 如有侵权,请联系我们删除。

“第二章 java基本语法”的评论:

还没有评论