Java基础语法
注释
注释不会执行,是写给别人看的代码说明。
Java注释又三种:
-
单行注释
// 注释内容
-
多行注释
/* 多行注释 */
-
文档注释
/** * 文档注释 */
示例:
public class HelloWord {
public static void main(String[] args) {
// 单行注释
System.out.println("Hello World!");
// 多行注释 /* 注释 */
/*
这是一个多行注释
*/
// javaDoc文本注释 /** 注释 */
/**
* @Description Hello World
* @Author myself
*/
}
}
标识符和关键字
-
关键字
Java的所有组成部分都需要名字。类名、变量名以及方法名都称为标识符。
-
标识符的注意事项
- 所有的标识符都应该以字母(A-Z,a-z),美元符号($),下划线(_)开头。
- 首字符之后可以是字母(A-Z,a-z),美元符号($),下划线(_)以及数字的任意组合
- 不能使用关键字作为方法名或者变量名
- 大小写敏感
- 不建议使用中文和拼音
数据类型
Java是一种强类型语言,对变量的使用要求严格,所有变量都需要先定义在使用。
Java的数据类型分为两大类:
- 基本数据类型
- 数值类型
- 整数类型
- byte占1个字节,范围:-128~127
- short占2个字节,范围:-32768~32767
- int占4个字节,范围:-2147483648~2147483647
- long占8个字节,范围:-9223372036854775808~9223372036854775807
- 浮点类型
- float占4个字节
- double占8个字节
- 字符类型 char占2个字节
- 整数类型
- boolean类型:占1位它的值只有true和false
- 数值类型
- 引用数据类型
- 类
- 接口
- 数组
// 八大基本数据类型
// 整型
byte num1 = 10;
short num2 = 30;
int num3 = 7878; // 最常用
long num4 = 8783785L; // long类型要在后面加一个L
// 小数,浮点型
float num5 = 1.1F; // float类型要在后面加一个F
double num6 = 3.141596;
// 字符类型
char n = 'A';
// 布尔类型
boolean flag1 = true;
boolean flag2 = false;
什么是字节?
- 位(bit):是计算机内部存储的最小单位。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用B来表示。
- 1B = 8bit
- 字符:是计算机中使用的字母、数字、字和符号。
整数扩展:进制问题
// 整数扩展 进制
int i1 = 0b1; // 二进制 0b开头
int i2 = 010; // 八进制 0 开头
int i3 = 10;
int i4 = 0x10; // 十六进制 0x开头
//输出结果分别是:1,8,10,16
浮点数扩展:
// 浮点型扩展
// float 是一个 有限的 离散的 舍入误差的数
// 最好避免浮点数的比较 BigDecimal 数学工具类用来准确比较浮点数
float f1 = 0.1f;
double d1 = 0.1;
System.out.println(f1==d1); // false
float f2 = 323232323233f;
float f3 = f2+1;
System.out.println(f2 == f3); // true
类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
运算中,不同数据类型先转换为同一数据类型,再进行计算。
- 强制类型转换:(类型)变量名 高->低
- 自动类型转换:低->高
注意点:
- 不能对Boolean类型进行转换
- 不能把对象转换为不相干的类型
- 在把高容量转换为低容量的时候,要进行强制值类型转换
- 转换的时候可能存在内存溢出,或者精度问题。
public class Demo02 {
public static void main(String[] args) {
//在计算大数据的时候,需要注意溢出问题
//JDK7的新特性,数字可以用_分割
int money = 10_0000_0000;
int years = 20;
int total = money * years; //-1474836480 发生了溢出
long total2 = money * years; // -1474836480 默认是int,转换之前已经出现了问题
long total3 = money * ((long)years); // 20000000000 先把一个数据转换为long
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
变量、常量
就是可以变化的量!
-
Java是一种强类型语言,每个变量都要声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
type varName [= value][{,varName=value}]
// 数据类型 变量名 = 值;可以使用逗号隔开生命多个同类型变量。
作用域:
- 类变量
- 实例变量
- 局部变量
-
注意事项:
- 每个变量都需要有类型,可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一个完整的语句,因此每一个生命都必须以分号结束。
常量就是初始之后不会变动的值。
常量可以理解为一种特殊的变量,他被设定后在程序运行过程中不能被更改。
final 常量名 = 值;
final double PI = 3.14;
常量名一般使用大写字符。
变量的命名规范:
- 所有的方法名、变量名、类名:见名知意。
- 类成员变量:首字母小写和驼峰原则
monthSalary
。 - 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线
MAX_VALUE
- 类名:首字母大写和驼峰原则
Man GoodMan
- 方法名:首字母消息和驼峰原则
run() addSalary()
运算符
Java语言支持如下运算符:
- 算术运算符:+,-,*,/,++,–,%
- 赋值运算符:=
- 关系运算符:> , < , >= , <= , == , != , instanceof
- 逻辑运算符:&& , || , !
- 位运算符:& , | , ^ , ~ , >> , << , >>> (了解)
- 条件运算符:?, :
- 扩展赋值运算符:+= , -=, *= , /=
public class DemoOperator {
public static void main(String[] args) {
// ++ -- 自增 自减运算 一元运算符
int a = 3;
int b = a++; // 执行这行代码后,先给b赋值,然后进行自增
// a++ a = a+1
System.out.println(a); // 4
// ++a a = a+1
int c = ++a; // 执行这行代码前,先进行自增,然后进行赋值
System.out.println(a); // 5
System.out.println(b); // 3
System.out.println(c); // 5
}
}
// -- 相同
public class DemoOperator02 {
// 逻辑运算符
public static void main(String[] args) {
// 与(and) 或(or) 非(not)
boolean b = true;
boolean c = false;
// 逻辑与运算,两个都为真,结果才为真
System.out.println("a && b:" + (b && c)); // a && b:false
// 逻辑或运算,两个有一个为真,结果就为真
System.out.println("a || b:" + (b || c)); // a || b:true
// 逻辑非运算,如果为真则为假,如果为假则为真
System.out.println("!(a || b):" + !(b && c)); // !(a || b):true
// 短路运算
int i = 5;
boolean d = (i < 4)&&(i++ <4);
System.out.println(d); // false
System.out.println(i); // 5
}
}
public class DemoOperator03 {
// 位运算
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
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3); // 16
}
}
public class DemoOperator04 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; // a = a+b
a -= b; // a = a-b
System.out.println(a);
// 字符串连接符 +
System.out.println(""+a+b); // 1020
System.out.println(a+b+""); // 30
// 三元运算符 ? :
// x?y:z
// 如果x为true,则结果为y,否则为z
int score = 80;
String type01 = score<60 ? "不及格":"及格";
String type02 = score>=80 ? "优秀":"不优秀";
System.out.println(type01); // 及格
System.out.println(type02); // 优秀
}
}
包机制
包的本质就是文件夹。
-
一般利用公司域名倒置作为包名
-
定义包
package *
-
导入包
import *
JavaDoc
- javadoc命令是用来生成自己API文档
- 参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本号
- @param 参数名
- @return 返回值情况
- @throws 抛出异常情况
package com.kaung.base; /** * @author chwang * @version 1.0 * @since 1.8 */ public class Doc { String name; /** * test方法 * @param name * @return * @throws Exception */ public String test(String name) throws Exception{ return name; } }
- 通过命令
javadoc 参数 java文件
生成文档javadoc -encoding UTF-8 -charset UTF-8 Doc.java