Java基础语法
一、注释、标识符和关键字
1. 注释
(1) 单行注释
//
(2) 多行注释
/* */
(3) 文档注释
javaDoc:文档注释
/* * */
2.标识符
类名、变量名、方法名都被称为标识符。

Tips:
(1) 所有的标识符都应该以字母(包含大小写)、美元符¥、下划线_开始,首字符之后可以是字母、美元符、下划线或数字的任何字符组合。
(2) 不能使用关键字作为变量名或者方法名
(3) 标识符区分大小写
二、数据类型
-
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
基本类型(primitive Type)
(1) 整数型
byte 占1个字节,范围:-128~127
short 占2个字节,范围:-32768~32767
int 占4个字节,范围:正负21亿
long 占8个字节,要在数字后边加L\l(尽量写大写的L)
(2) 浮点型
float 4个字节,要在数字后边加f
double 8个字节
(3) 字符型
char 2个字节
字符串 String不是关键字,是类
(4) boolean型
占19位,其值只有true和false
-
引用类型(Reference Type)
-
(1) 类
(2) 接口
(3) 数组
-
什么是字节?
位(bit):是计算机内部数据储存的最小单位
字节(byte):是计算机中数据处理的基本单位,一般用B表示
1B = 8 bit
1bit表示1位
1Byte表示一个字节
1024B = 1KB
1024KB = 1M
1024M = 1G
1024G = 1TB
-
字符:是指计算机中使用的字母、数字、字和符号
-
拓展
-
整数拓展——进制
二进制0b
八进制0
十进制
十六进制0x 0-9 A-F
-
浮点数拓展
浮点数是有限的、离散的,有舍入误差,接近但不等于
最好完全避免使用浮点数进行比较
BigDecimal :数学工具类
-
字符拓展
所有字符本质还是数字
-
转义字符
\t 制表 \n 换行
-
三、类型转换
-
由于Java是强类型语言,所以进行有些运算的时候需要进行类型转换。运算中,不同类型的数据先转为同一类型,再进行运算。
-
由低到高分别为:byte,short,char < int < long < float < double
-
格式:强制转换:(类型)变量名 高-->低 自动转换: 低-->高
-
Tips:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转化为低容量时要进行强制转换
-
转换的时候可能存在内存溢出或精度问题
-
操作比较大的数的时候,注意溢出问题
-
JDK7新特性:数字之间可以用下划线分隔,且输出时下划线不会输出。
public class Demo { public static void main(String[] args) { int money = 10_0000_0000; int years = 20; int total = money*years;//-1474836480,计算的时候溢出了 long total2 = money*years;//默认是int,转换前已经存在问题了 long total3 = money*((long)years);//先把一个数转化成long } }
-
四、变量、常量、作用域
1. 变量
-
变量就是可以变化的量
-
Java是强类型语言,每个变量都必须声明类型
-
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域
type varName [=value] [{,varName[=value]}]; //数据类型 变量名 = 值;可以用逗号来声明多个同类型变量(但不建议这样写)
-
Tips:
- 每个变量都有类型(基本类型或引用类型)
- 变量名必须是合法标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
public class Demo {
public static void main(String[] args) {
//int a,b,c;
//最好写成
int a;
int b;
int c;
String name = "Luffy";
char x = 'X';
}
}
2. 变量作用域
-
类变量:加了static的变量,从属于类
-
实例变量:在方法的外边,类的里面;从属于对象
如果不进行初始化,值就会变成这个类型的默认值(0 0.0 布尔值:false 除了基本类型,默认值都是null)
-
局部变量:是在方法里,且使用前必须声明且初始化值
public class Variable { //类变量 static int allClick = 0; //实例变量 String str = "hello world"; public void method() { //局部变量 int i = 0; } }
public class Demo { //属性:变量 //类变量:加了static的变量 static double salary = 2500; //实例变量:从属于对象 String name; int age; //main方法 public static void main(String[] args) { //局部变量 int i = 10; System.out.println(i); //变量类型 变量名字 = new Demo(); Demo demo = new Demo(); System.out.println(demo.age); System.out.println(demo.name); //类变量 System.out.println(salary); } }
3. 常量(Constant)
-
初始化之后不能再改变值,即常量就是不会变动的值。
-
常量名一般使用大写字符
//final 常量名 = 值 final double PI = 3.14; //修饰符,不存在先后顺序 static final double A = 1; final static double A = 1;
4. 变量的命名规范
(1)类成员变量、局部变量、方法名:首字母小写和驼峰原则(monthSalary)
(2)常量:大写字母和下划线:MAX_VALUE
(3)类名:首字母大写和驼峰原则(GoodWoman
五、运算符
- 算术运算符:+、-、*、/、%(取余/模)、++、--
- 赋值运算符:=
- 关系运算符:>、<、>=、<=、==、!=、instanceof
- 逻辑运算符:&& || !
- 位运算符:& | ^ ~ >> << >>> (了解即可)
- 条件运算符:?:
- 扩展赋值运算符: += -= *= /=
//二元运算符
public class Demo {
public static void main(String[] args) {
//Ctrl+D:复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
//逻辑运算符
public class Demo {
public static void main(String[] args) {
//与and 或or 非
boolean a = true;
boolean b = false;
//逻辑与运算:两个变量都为真,结果才为真
System.out.println("a && b:" + (a&&b));
//逻辑或运算:两个变量有一个为真,结果就为真
System.out.println("a || b:"+(a||b));
System.out.println("!(a && b):"+!(a&&b));
//短路运算
}
}
//位运算符
public class Demo {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B 如果相对应位都是1结果则为1,否则为0; 0000 1100
A|B 如果相对应位都是0结果则为0,否则为1; 0011 1101
A^B 如果相对应位相同则是0,否则为1; 0011 0001
~B 取反
*/
/*
效率极高
<<左移 一位,相当于数字*2
>>右移 一位,相当于数字/2
*/
}
}
//字符串连接符 +
int a = 10;
int b = 20;
//从左到右,有String类型,则再运算+时是String类的拼接
System.out.println(""+a+b); //1020
//从左到右,先进行加法运算然后再进行String类的拼接
System.out.println(a+b+"");//30
//条件运算符(三元运算符)
public class Demo {
public static void main(String[] args) {
//x ? y : z
//如果x为true则结果为y,否则结果为z
}
}
六、javaDoc生成文档
通过命令行 javadoc 参数 java文件