2.1 java程序构成
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手册
2.3 标识符
标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。
标识符是由字母 数字 下滑线 $组成的,不能数字开头,不能使用空格和特殊的符号,如下红框内的是非法
2.4 关键字 保留字
保留字(reserved word),指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。
保留字包括关键字和未使用的保留字。
关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。一般出现这种情况可能是由于考虑扩展性。例如,Javascript有一些未来保留字,如abstract、double、goto等等。
java编程中有没有goto语句?
关键字****含义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程序中,变量名是区分大小写。
- 变量作用域
- 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)引用数据类型(对象 类 接口 数组)
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);
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:比较运算符“==”不能误写成“=” ,切记!切记!
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)、逻辑运算符
&&逻辑与 ||逻辑域 !逻辑非
&
|
^
!
&&
||
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)、位运算符 >> <<
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}}
位移运算,实现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$被格式化的参数索引("%1d , 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());}}
版权归原作者 梁云亮 所有, 如有侵权,请联系我们删除。