2020.7.22-7.23java基本语法
Java基础语法
一.注释
注释是不会被执行的,是写给我们写代码的人看的,养成书写注释是一种好习惯
- 单行注释//
- 多行注释/**/
public class Annotation {
public static void main(String[] args){
System.out.print("Hello World!");//打印Hello World!(单行注释)
}
}public class Annotation {
public static void main(String[] args){
System.out.print("Hello World!");//打印Hello World!(单行注释)
}
}
/*(多行注释)
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永无BUG
*/
二.表示符
- 关键字,常见的关键字如下表
-
Java所有组成的部分都需要名字,类名、变量名、方法名都称作标识符
注意以下几点
- 所有的标识符都应该以字母(A-Z或a-z)或者美元符号$,下划线_开头
- 标识符首字母之后可以是字母(A-Z或a-z)或者美元符号$,下划线_以及数字的任意组合
- 不能使用关键字作为变量名或者方法名
- 标识符是大小写敏感的
三.数据类型
- 数据类型基本概念:Java是强类型语言——要求变量的使用要严格符合规定,所以变量都必须先定义后使用
public class DateType1 {
public static void main(String[] args) {
int num1 = 10;
long num2 = 30L;//long类型要在数字后面加个L
float num3 = 50.1F;//float类型要在数字后面加个F
char name1 = 'A';//一个字符
String name2 = "ABC";//字符串,不属于基本数据类型,String是一个类
boolean flag1 = true;
boolean flag2 = false;//布尔值
}
}
-
一些知识拓展
- 1bit=1位
- 1Byte=1个字节,有8位
- 1B=8b
- 字符是指计算机中使用的字母、数字、字、符号
-
数据类型知识拓展
- 整型拓展
public class DateType2 {
public static void main(String[] args) {
//整型拓展,二进制以0b开头,八进制以0开头,十六进制以0x开头,十进制照写
int i=10;
int j=0b1010;
int k=012;
int l=0x0a;
System.out.println(i);
System.out.println(j);
System.out.println(k);
System.out.println(l);
}
}
System.out.printf("============================\n");
/*输出结果
10
10
10
10
============================
*/
- 浮点型拓展
//浮点数拓展,float定义的数是有限的,离散的,会进行舍入误差,得到的数是大约数
public class DateType2 {
public static void main(String[] args) {
float a=0.1F;
double b=0.1;
System.out.println(a);
System.out.println(b);
System.out.println(a==b);
float c=6_6666_6666;
float d=c+1;
System.out.println(c);
System.out.println(d);
System.out.println(c==d);
}
}
/*输出结果
0.1
0.1
false
6.6666669E8
6.6666669E8
true*/
结论:最好避免使用浮点数进行比较,银行业务计算用到“数学工具类”——BigDecimal
- 字符拓展
public class DateType2 {
public static void main(String[] args) { char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换
}
}
/*输出结果
a
97
中
20013
*/
结论:所有的字符本质上都是数字,查看的是Unicode表
-
布尔值拓展
一般与if语句连用
boolean flag=ture;
if(flag==ture){
...
}
//与底下等效
boolean flag=ture;
if(flag){
...
}
四.类型转换
-
运算中,不同类型的数据要先转换成同一类型,然后才能进行计算,优先级如下所示(低☞高)
byte、short、char——int——long——float——double
-
转换类型
-
自动转换
低——高
public class DateTypeConversion {
public static void main(String[] args) {
int i=128;
double j=i;
System.out.println(i);
System.out.println(j);
}
}
/*输出结果
128
128.0
*/
-
强制转换
格式:(转换的类型)变量名,适用于高——低
一些特殊的情况,可将低强制变为高,防止报错
public class DateTypeConversion {
public static void main(String[] args) {
int a=128;
byte b=(byte)a;
System.out.println(a);
System.out.println(b);//出现内存溢出
System.out.println((int)100.7);
System.out.println((int)-100.7);
}
}
/*输出结果
128
-128
100
-100
*/
注意点:不能对布尔值进行转换,转换时可能出现如上的内存溢出(出现数据溢出,数值就会出现问题)或者精度的问题
- 常见的错误:操作数过大时,出现溢出
int money=10_0000_0000;
int years=20;
int total1=money*years;//计算时出现溢出,int范围是正负21亿左右
long total2=money*years;//转换成long前就已经溢出
long total3=money*((long)years);//正解:把其中一个数先变为long
System.out.println(total1);
System.out.println(total2);
System.out.println(total3);
/*输出结果
-1474836480
-1474836480
20000000000
*/
五.变量
-
基本概念
每个变量都必须声明他的类型,它可以看成一个指定的空间
格式:数据类型 变量名=值;
可以用逗号隔开声明多个同类型的变量
int a=1,b=2,c=3;2.
-
变量的分类
- 局部变量
- 实例变量
- 类变量
public class Variable {
//实例变量:从属对象(类),可以不用初始化
//实例变量不初始化,整型的默认值为0,浮点型默认值为0,布尔值的默认值为false,除了基本数据类型,其余的默认值为null
//局部变量必须初始化,只能用在某个方法下,此处用在main方法下
static double salary=25_0000;//类变量声明
String name;
int age;//这两条为实例变量声明
public static void main(String[] args) {
int i=10;//局部变量声明
Variable variable=new Variable(); //变量类型 变量名字=new 变量类型(实例变量在方法下的使用)
System.out.println(i);
System.out.println(variable.age);
System.out.println(variable.name);
System.out.println(salary);
}
}
/*
输出结果:
10
0
null
250000.0
*/
-
常量
常量是一直特殊的变量
public class Constant {
static final double SALARY=25_0000;
public static void main(String[] args) {
System.out.println(SALARY);
}
}
/*
输出结果:
250000.0
*/
变量命名规范:
- 所有的变量都要用英文,不要拼音
- 类成员变量与局部变量,首字母小写,后面满足驼峰原则(除了第一个单词以外,后面单词的首字母大写)如:moneySalary
- 常量,大写字母和下划线如:MAX_SALARY
- 类名,首字母大写和驼峰原则如:DateType
- 方法名:首字母小写和驼峰原则:main(),mainMain()
六.运算符
- 运算符分类
- 各类运算符的用法
- 算术运算符
public class Operator {
public static void main(String[] args) {
//加减乘除、求余
int x1=10,y1=20,z1=25;
System.out.println(x1+y1);
System.out.println(x1-y1);
System.out.println(x1*y1);
System.out.println(x1/y1);//只有整数
System.out.println(x1/(double)y1);//得到小数
System.out.println(z1%y1);
}
}
/*
输出结果:
30
-10
200
0
0.5
5
*/
特别提醒:
运算时,有一个数的类型为Long/Double型,输出结果为Long/Double型;其余均为Int型,整型
很多运算会使用一些工具“类”来操作,比如幂函数
double a=Math.pow(2,3);//2^3=8
System.out.println(a);
- 自加自减运算
int x2=3;
int y2=x2++;//执行此代码后,先把x2的值赋于y2,x2再自增1
int z2=++x2;//执行此代码前,先把x2自增1,再把x2的值赋于z2
System.out.println(x2);
System.out.println(y2);
System.out.println(z2);
/*
输出结果:
5
3
5
*/
- 关系运算符>,==,<,!=等
经常与if语句连用
- 逻辑运算符
与:&&,短路原则,逻辑与运算,两个为真,才为真
或:||,逻辑或运算,两个之一为真,就为真
非:逻辑非运算,真变为假,假变为真
boolean m=true;
boolean n=false;
System.out.println("m&&n:"+(m&&n));
System.out.println("m||n:"+(m||n));
System.out.println("!(m&&n):"+!(m&&n));
/*
输出结果:
m&&n:false
m||n:true
!(m&&n):true
*/
与计算的短路原则验证
int a=5,b=5;
boolean c=(a++>5)&&(b>5);//第一个条件判断结果为ture,于是继续判断第二个条件
System.out.println(c);
System.out.println(a);
System.out.printf("============================\n");
int a1=5,b1=5;
boolean c1=(b1>5)&&(a1++>5);//第一个条件运行为false,不再判断第二个条件,短路原则
System.out.println(c1);
System.out.println(a1);
/*
输出结果:
false
6
============================
false
5
*/
-
位运算符
&:与
|:或
^:异或
~:取反
<<:左移相当于乘2;>>:右移相当于除2
/* A=0011 1100 B=0000 1101 A&B=0000 1100 A|B=0011 0001 ~B=1111 0010 */ System.out.println(2<<3);//0000 0010左移3位变为0001 0000 /* 输出结果 16 */
-
扩展赋值运算符
偷懒时可以使用+=;-=;*=;/=
a+=b;//a=a+b a-=b;//a=a-b
-
字符串连接符“+”
//字符串连接符“+”
int a=10,b=20;
System.out.println(a+b);
System.out.println(" "+a+b);//
System.out.println(" "+(a+b));
System.out.println(a+b+" ");
/*
输出结果:
30
1020
30
30
*/
-
三元运算符
//三元运算符: x?y:z如果x==ture,则结果为y,否则为z int score=80; String mark=score<60?"fail":"success"; System.out.println(mark); /* 输出结果: success */
七.Java包机制
-
包机制本质上就是文件夹
-
他是一种倒置放置方法
如:www.baidu.com
在java包机制中就是:com.baidu.www
-
包语句的语法格式:
package pkg1[.pkg2[.pkg3]];
-
操作方法:点击scr,右键new一个package,命名为com.lyj,同样的操作new一个package,命名为com.lyj2,然后将之前写的java文件放入lyj的文件夹,可出现下图
这样子做可以将两个名字相同java文件放到不同的文件夹中,方便管理
点开一个java文件会出现最上面一个语句,这个语句不能删除,代表的是这个“包”下面的一个“类”
-
-
导入包的语法格式为
import package1[.package2.(classname|*)]
-
有时候要用到其他“类”,就要导入其他的包,点击该类,Ctrl+Alt,会提示你导入你需要的包,package语句下方便会出现import语句
-
又或者你要引入lyj下的Variable这个类可以在package语句下打:
import com.lyj.Variable;就可以引用了
- 如果包内文件过多,可以利用下语句,将包内的类全部引用
import com.lyj.*;
八.JavaDoc
-
javadoc命令是用来生成自己的API文档的
-
参数信息可以为
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况