Java的基础语法
1、注释、标识符、关键字
Java中的注释有三种,注释并不会被执行,是给人看的。
单行注释
//注释文字
只能够注释一行。
多行注释
/*
多行注释文字
*/
能够注释一段文字。
文档注释
/**
*abcd
*aaaa
*/
和JavaDoc结合使用
标识符
Java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符。
注意点
- 所有的标识符都应该以字母(A-Z或者 a-z),美元符($)、或者下划线 ( _ ) 开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线 ( _ ) 或数字的任何字符组合
- 不能使用关键字作为变量名或方法名。
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、_1_value
- 非法标识符举例:123abc、-salary、#abc
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low
关键词
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
2、数据类型
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。(更安全,速度相对比较慢)
Java
弱类型语言
对变量使用相对的没有那么严格的规定。
VBS,JS
Java的数据类型分为两大类
- 基本数据类型又被称为值类型,包括6种数字类型(byte 1个字节范围、short 2个字节范围、int 4个字节范围、long 8个字节范围,数字结尾加上L、float 4个字节范围,数字结尾加上F、double 8个字节范围)、1种字符型(char 2个字节范围)和1种布尔型(boolean)。
- 引用数据类型包括类(Class)、接口(Interface)、数组(Array)等。
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整的句子,因此每一个声明都必须以分号结束。
扩展内容
-
整数拓展:进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10; int i2 = 010;//八进制以0开头 int i3 = 0x10;//十六进制以0x开头 0~9 A~F
以上内容打印出来的结果为10,8,16
-
浮点数拓展:在处理银行业务的时候浮点数不能用float和double直接运算
float f = 0.1f; double d = 1.0/10; System.out.println(f);//结果为0.1 System.out.println(d);//结果为0.1 System.out.println(f==d);//结果为false float d1 = 23131312312312313f; float d2 = d1 + 1; System.out.println(d1==d2);//结果为true
浮点数是有限和离散的存在舍入误差,最好完全避免使用浮点数进行比较!银行业务使用BigDecimal类来进行标识运算。
-
字符拓展
char c1 = 'a'; char c2 = '中'; System.out.println(c1);//结果为a System.out.println((int)c1);//(int)强制转换为int类型,结果为97 System.out.println(c2);//结果为'中' System.out.println((int)c2);//(int)强制转换为int类型,结果为20013 char c3 = '\u0061';//16进制的 System.out.println(c3);//结果为a
所有的字符本质还是数字。
//char编码 Unicode 2字节 65536
转义字符:\t 制表符 \n换行......
String sa = new String("hello world"); String sb = new String("hello world"); System.out.println(sa=sb);//false,对象 从内存分析 String sc = "hello world"; String sd = "hello world"; System.out.println(sc=sd);//true
-
布尔值扩展
boolean flag = true; if (flag==true){}//新手 if (flag){}//老手,这两个表示方式是完全一样的。代码要精简易读,所以推荐这种写法。
3、类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
int i = 128; byte b = (byte)i;//强制转换为byte类型 高-->低 double x = i;//低-->高自动转换。 System.out.println(i);//结果为128 System.out.println(b);//结果为-128
出现以上问题的原因是byte类型的最大值是127,将i强制转换成byte时出现了内存溢出的问题,导致值变样。所以转换的时候要避免出现这种情况。
从高位类型转为低位类型需要只用强制转换,语法为: (类型)变量名 ; 高--->低
从低位类型转为高位类型是自动转换的 低--->高
低----------------------------------------------------->高
byte,short,char->int->long->float->double
运算中,不同类型的数据先转换为同一类型,然后进行运算。
注意点
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换倒低容量的时候,强制转换
-
转换的时候可能存在内存溢出,或者精度问题!
-
数字之间可以用下划线分割
int money = 10_0000_0000; System.out.println(money);//结果为1000000000是JDK7的新特性方便识别大数字。 int years = 20; int total = money*years;//结果-1474836480,计算的时候溢出了。 long total2 = money*years;//结果-1474836480,还是溢出了。原因是两个值都是int类型所以他们的结果默认为int类型,得出结果后再转换为long的类型。 long total3 = money*((long)years);//要避免上面这种情况,要先将years转变为long类型再进行计算。 System.out.println(total3);//结果为2000000000
-
4、变量、常量
变量
变量是什么:就是可以变化的量!
Java是一种张类型语言,每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量,变量类型和作用域。
type varName [=value] [{,varName[=value]}]//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符
-
变量声明是一条完整的句子,因此每一个声明都必须以分号结束。
变量作用域
-
类变量
在方法外,类中。
从属于类,随类出现,随类消失。
static 后面的变量,在方法中可以直接使用。
-
实例变量
在方法外,类中。
从属于对象,如果不自行初始化,就会是这个类型的默认值,数值类型的默认值为0或者0.0,布尔值默认为false,除了基本类型其他默认值都是null。
-
局部变量
生命周期中只在方法内有效
局部变量必须声明和初始化
public class Variable{
static int allClicks=0;//类变量
String str = "hello World";//实例变量
public void method(){
int i = 0;//局部变量
Variable var = new Variable() ;//变量类型 变量名字 = new Variable()这样这样就可以使用其中的实例变量了
}
}
常量
初始化后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
//final 常量名=值;
final double PI=3.14;
常量名一般使用大写字符
变量的命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则:monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母小写和驼峰原则
方法名:首字母小写和驼峰原则
5、运算符
Java语言支持如下运算符:
- 算术运算符: + , - , * ,/ , % , ++(自增运算符) , --(自减运算符)
- 赋值运算符: =
- 关系运算符: > , < , >= , <= , == , !=instanceof
- 逻辑运算符: && , || , !
- 位运算符: & , | , ^ , ~ , >>(右移) , <<(左移) , >>>(了解!!!)
- 条件运算符: ?:
- 扩展赋值运算符: += , -= , *= , /=
int a = 3;
int b = a++;//执行完这行程序后,先给b赋值,再自增
int c = ++a;//执行这行代码前,先给a自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
很多其他运算我们会使用工具类进行运算,比如幂运算Math.pow(底数,幂)
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
2*8如何运算最快
*/
System.out.println(2<<3);//结果为16
/*
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
所以在位运算中将2向左移动3为值为16
在位运算中左移<<相当于*2
在位运算中右移<<相当于/2
位运算优势效率极高
*/
字符串连接符 + ,如果两侧出现String类型则所有类型都会转成String类型然后再连接起来
int a = 10;
int b = 20;
a+=b;//a = a+b
a-=b;//a = a-b
System.out.println(a);
//字符串连接符 +,String
System.out.println(""+a+b);结果为1020
System.out.println(a+b+"");结果为30
三元运算符
x?y:z //如果x==true,则结果为有,否则结果为z
int score = 50;
String type = score<60?"不及格":"及格";
System.out.println(type);结果为不及格
6、包机制、JavaDoc
包机制
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]]
一般利用公司域名倒置作为包名;例:baidu.com 包名定义就是com.baidu。没有硬性规定
为了能够使用某一个报的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能
import package1[.package2...].(classname|*);
定义类名时尽量不要让包里面的类名重名。
JavaDoc
javadoc命令是用来生成自己API文档的
/**
*@author 作者
*@version 1.0
*@since 1.8
*/
使用IDEA在类中写JavaDoc输入/**会自动弹出部分需要注释的参数。
加在类上面就是类的注释
加载方法上面就是方法的注释
在javadoc中的参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值信息
-
@throws 异常抛出情况
使用终端生产javadoc
在使用了javadoc注释的包下开启终端,输入
javadoc -encoding UTF-8 -charset UTF-8 代码文件名.java(-encoding UTF-8 -charset UTF-8这段命令用来编译文档成UTF-8格式的,方便中文显示)
可以在文件夹中生成index.html,点开这个文档会出现和官方文档类似的api文档。
使用IDEA生产javadoc
- 选中需要生成javadoc的包
- 点击顶部工具(Tools)菜单,并选择生成javadoc(Generate JavaDoc)这个选项
- 然后会弹出一个界面,然后在输出目录(Output directory )输入框后面的按钮点击进去选择我们刚才创建的文件夹(JavaDoc),然后在区域设置(locale框)里填写zh_CN,意思是这个代表的就是中文,输完之后在下面的其他命令行式参框(Other command line arguments:)中输入下面这行编码-encoding utf-8 -charset utf-8,意思是用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。
- 点击确认