Java基础语法
Java基础语法
1.注解
Java中的注释有三种:
-
单行注释//
-
多行注释/* */
-
文档注释/** @ */
2.标识符和关键字
Java标识符定义
- 包名、类名、方法名、参数名、变量名等,这些符号被称为标识符
- 标识符可以由字母、数字、下划线_ 和 美元符号组成
- 标识符不能以数字开头,不能是java中的关键字
- 不能使用关键字作为变量名或者方法名
- 标识符是大小写敏感的
- 可以使用中文命名,但一般不建议这样使用,也不建议用拼音
例如:
合法标识符:date、$abc 、date、D $date、myint 等。
不合法的标识符:123.com、2com、for、if 、87.2等。
Java标识符规则
1、包名所有字母必须小写。例如:cn.com.test
2、类名和接口名每个单词的首字母都要大写。例如:ArrayList
3、常量名所有的字母都大写,单词之间用下划线连接。例如:DAY_OF_MONTH
变量名和方法名的第一个单词首字母小写,从第二个单词开始,每个单词首字母大写。例如:lineName、getLingNumber
4、在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如:使用userName表示用户名,password表示密码。
Java 关键字
Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。以下对这些关键字进行了分类。
关键字
数据类型 boolean、int、long、short、byte、float、double、char、class、interface、enum、void
流程控制 if、else、do、while、for、switch、case、default、break、continue、return
异常处理 try、catch、finally、throw、throws
修饰符 public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native
类与类之间关系 extends、implements
建立实例及引用实例 this、supper、instanceof、new
导包 package、impor
保留字
保留字:Java版本尚未使用,但以后版本可能会作为关键字使用。
在命名标记符时要避免使用这些保留字:
goto、const、byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var
注意:
java中true、false、friendly和null不属于关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符。
java关键字和保留字都是小写。即null是关键字,NULL不是关键字;TRUE、FALSE也不是关键字。
sizeof 是 C/C++ 中的方法,Java 中并没有这个方法,也没有该关键字 或 保留字
3.数据类型
强类型语言:要求变量的使用要符合规定,所有变量都必须先定义后才能使用
位(bit):又名 比特位,表示二进制位,是计算中内部数据储存的最小单位。一个二进制位只能表示0和1两种状态。
字节(byte):是计算机中处理数据的基本单位。一个字节等于八位(1Byte = 8bit)
字(word):计算机进行数据处理时,一次存取、加工和传送的数据长度。在常见的计算机编码格式下,一个字等于两个字节(十六位)(1word = 2Byte = 16bit)
3.1JAVA的数据类型分为两大类:
1、基本数据类型:整型、浮点型、字符型、布尔型
整数类型 —— byte、short、int、long,
浮点类型 —— float、double
字符类型 —— char
布尔类型 —— boolean
2、引用数据类型:接口(interface)、数组([ ])、类(class)。
1.基本数据类型(八种):
1.1 整数类型
整型 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
byte | 1字节 | -128 ~ 127 | 0 |
short | 2字节 | -32768 ~ 32767 | 0 |
int | 4字节 | -2^31 ~ (2^31) - 1 | 0 |
long | 8字节 | -2^63 ~ (2^63) - 1 | 0L |
1.2浮点类型(小数)
浮点型 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
float | 4字节 | 10^38 | 0.0F |
double | 8字节 | 10^308 | 0.0 |
1.3 字符类型
字符型 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
char | 2字节 | 0 ~ 65535 | ‘\u0’ |
1.4 布尔类型
布尔型 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
boolean | 视情况而定 | true、false | false |
2.引用数据类型(三种):
引用数据类型是建立在八大基本数据类型基础之上,包括数组、接口、类。引用数据类型是由用户自定义,用来限制其他数据类型。简单的说,除八大基本类型之外的所有数据类型,都为引用数据类型。
所有引用类型的默认值都为 null 。
3.2数据类型转换:
转化从低级到高级:byte,short,char(三者同级)—> int —> long—> float —> double
运算中,不同类型的数据先转换成同一类型再计算
1、低级转换高级:自动类型转换
2、高级转换低级:强制类型转换 (类型)变量名
注意事项
- 强制类型转换过程中可能造成内存溢出或者精度问题
- 强制类型转换时要在需要转换的数据类型前加上 ()。
- 不能对布尔值进行转换
- 不能把对象类型转换成不相干的类型
3.3整数拓展
进制:二进制0b 十进制 八进制0 十六进制0x(0~9 A~F)
3.4浮点数拓展
银行业务怎么表示?钱
BigDecimal 数学工具类
float 有限 离散 舍入误差 大约 接近但不等于
double
float f = 0.1f;
dpuble d = 1.0/10;
System.out.println(f==d);//flase
float d1 = 2323232323232f;
float d2 = d1 + 1;
System.out.println(d1 == d2);//true
少用浮点数进行比较
3.5字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);//a
System.out.println((int)c1);//强制抓换97
System.out.println(c2);
System.out.println(c2);//20013
所有字符的本质还是数字
编码 Unicode 表:97 = a 65=A 2个字节 0-65536 U0000 UFFFF
System.out.println(‘\u0061’);//a
转义字符
\t 制表符
\n 换行
······
注意点:
String sa = new String("hello world");//对象
String sb = new String("hello world");
System.out.println(sa = sb);//flase
String sc = "hello world";
String sd = "hello world";
System.out.println(sa = sb);//true
3.6布尔值扩展
boolean flag = true;
if (flag = true){};//新手
//代码要精简
if(flag){};//老手
4.变量、常量
变量是什么:就是可以变化的量
Java是一种强类型的语言,每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}]
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
- 注意事项
- 每个变量都有类型,类型可以是基本类型也可以是引用类型。
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
int a, b , c;
int a=1,b=2,c=3;//可以但不建议前两种
int a=1
...
String name = “xxa”;
变量的作用域
-
类变量
-
实例变量
-
局部变量
package com.ma; /** * ClassName: Demo08 * Package: com.ma * Description: * * @Author: 马述政 * @Create: 2024/5/30 - 22:11 * @Version: v1.0 */ public class Demo08 { //类变量 static static double salary = 2500; //属性:变量 //实例变量:从属于对象;如果不自动初始化,则为这个类型的默认值0 0.0 //布尔值:默认为false //除了基本类型,其余的都是null String name; int age; //main方法 public static void main(String[] args) { //局部变量;必须声明和初始化值 int i = 10; System.out.println(i);//10 //变量类型 变量名字=new Demo08(); Demo08 demo08 = new Demo08(); System.out.println(demo08.age);//0 System.out.println(demo08.name);//null //类变量 static System.out.println(salary); } //其他方法 public void add(){ } }
常量
- 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值
- 所谓常量可以理解为一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变
final 常量名=值;
final double PI=3.14;
- 常量名一般使用大写字符
public class Demo09 {
//修饰符,不存在先后顺序;static final
static final double PI=3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范
- 所有的变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
5.运算符
Java语言支持如下运算符:优先级()
- 算数运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!与或非
- 位运算符:&,|,^,~,>>,<<,>>>(了解)
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl+D:复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
public class Demo02 {
public static void main(String[] args) {
long a =1211212122L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
}
}
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确 错误 布尔值
//if
int a = 10;
int b = 20;
int c = 21;
//取余,模运算
System.out.println(c%a);
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,再自增
//a++ a=a+1
System.out.println(a);
//a++ a=a+1
int c = ++a;//执行完这行代码前,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 2*2*2=8很多运算会使用一些工具类去运算
double pow = Math.pow(2, 3);
System.out.println(pow);
}
}
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and)或(or)非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b");//逻辑与运算,全真为真
System.out.println("a || b");//逻辑或运算,有真为真
System.out.println("!(a && b)");//真变假,假变真
//短路运算
int c = 5;
boolean d = (c < 4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
}
public class Demo06 {
public static void main(String[] args) {
/*
* A = 0011 1100
* B = 0000 1101
* -------------------
* A&B = 0000 1100
* A|B = 0011 1101
* A^B = 0011 0001
* ~B = 1111 0010
*
* 2*8 = 16 2*2*2*2
* 效率高
* << *2
* >> /2
* 2<<3
*
* 0000 0000 0
* 0000 0001 1
* 0000 0010 2
* 0000 0011 3
* 0000 0100 4
* 0000 1000 8
* 0001 0000 16
*
* */
}
}
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a +=b;//a=a+b
//字符串连接符 + ,String
System.out.println(a+b);//30
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
}
}
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格":"及格了";//必须掌握
//if
System.out.println(type);
}
}
6.包机制
- 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间
- 包语句的语法格式为:
package pkg1[. pkg2[.pkg3……]];
- 一般利用公司域名倒置作为包名;www.baidu.com com.baidu.www baike
- 为了能够使用某一包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能
import package1[.package2…].(classname|*)
alibaba开发手册
7.JavaDoc
- javadoc命令是用来生成自己的API文档的
- 参数信息
- @author 作者名
- @version 版本号
- @since 知名需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
--生成JavaDoc文档 命令行javadoc 参数 Java文件
javadoc -encoding UTF-8 -charset UTF-8 xxx.java
多出一个index.html打开
--IDEA生成JavaDoc文档