Java基础语法
1、注释、标识符、关键字
注释
单行注释
//单行注释
多行注释
/*注释一段文字
多行注释
*/
文档注释
/**可识别内容
* @Description HelloWorld
*/
标识符和关键字
关键字
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符
以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
不能使用关键字作为变量名或方法名
标识符是大小写敏感的。
可以使用文中命名,但一般不建议这样去用,也不建议使用拼音,很low
2、数据类型
强类型语言:要求变量的使用要严格符合规定, 所有变量都必须点定义后才能使用
弱类型语言:要求变量的使用不用严格符合规定
基本类型(primitive type)
类型 | 字节 | 范围 |
---|---|---|
byte(字节) | 1 | -128~127 |
short(短整型) | 2 | -32768~32767 |
int(整型) | 4 | -2147483648~2147483647 |
long(长整型) | 8 | -9223372036854775808~9223372036854775807 |
float(单精度浮点型) | 4 | NAN |
double(双精度浮点型) | 8 | NAN |
char(字符型) | 2 | NAN |
boolean(布尔型) | 1 | Ture,False(占1位(bit)) |
引用类型(reference type)
面试题
public class HelloWorld {
public static void main(String[] args) {
//整数拓展:进制 二进制0b 十进制 八进制0 十六进制0x
int i1 = 10;
int i2 = 0b10;//二进制0b
int i3 = 010;//八进制0
int i4 = 0x11;//十六进制0x 0~9 A~F 16
System.out.println(i1);//10
System.out.println(i2);//2
System.out.println(i3);//8
System.out.println(i4);//17
System.out.println("=========================");
//=========================
//浮点数拓展? 银行业务怎么表示?钱
//BigDecimal 数学工具类 处理银行业务
//=========================
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f);
System.out.println(d);
System.out.println(f==d);//false
float d1 = 23131312312312313f;
float d2 = d1 + 1;
System.out.println(d1==d2);//ture
//=========================
//字符拓展
//=========================
System.out.println("=========================");
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//强制换行
System.out.println(c2);
System.out.println((int)c2);//强制换行
//所有的字符本质还是数字
//编码 Unicode 表:(97 = a 65 = A) 2字节 0-65536 Excel最长只有2^16=65536
//U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3);//a
//转义字符
// \t制表符
// \n 换行
// .....
System.out.println("\n");
//
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
//对象 从内存分析
//...
//布尔值扩展
boolean flag = true;
if (flag==true){} //新手
if (flag){} //老手
//Less is More! 代码要精简易读
}
}
3、类型转换
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
//低------------------------------------------>高
//byte, short, char->int->long->float->double
//浮点数优先级大于整数,所有float大于long
-
运算中,不同雷西那个的数据先转化为同一类型,然后进行运算。
-
强制转换(高到低)
int i = 128; byte b = (byte)i;//强制转换
-
自动转换(低到高)
int i = 128; double b = i;//自动转换 System.out.println("============="); char c = 'a'; int d = c+1;//自动转换:98
注意点:1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
4、变量、常量、作用域
变量
-
变量是什么:就是可以变化的量!
-
Java是一种强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量的命名规范
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(), runRun()
常量
-
常量(constant):初始化(initialize)后不能再改变值!,不会变动的值。
-
所谓常量可以理解城一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名=值; final double PI=3.14;
-
常量名一般使用大写字符 。
变量作用域
-
类变量:可以直接在局部内使用,不用再创建对象。
-
实例变量:从属于对象;如果不自行初始化,这个类型的默认值int(0),float(0.0),boolean(false),除了基本类型,其余默认值都是null。
-
局部变量:必须声明和初始化值
static int allClicks = 0;//类变量 String str = "hello world";//实例变量 public void method(){ int i = 0;//局部变量 }
5、基本运算符
算术运算符 | +,-,*,/,%,++,-- |
---|---|
赋值运算符 | = |
关系运算符 | >,<,>=,<=,==,!= instanceof |
逻辑运算符 | &&,||,! |
位运算符 | &,|,^,~,>>,<<,>>>(了解!!!) |
条件运算符 | ?: |
扩展赋值运算符 | +=,-=,*=,/= |
&& | 两个都为真,结果为ture |
---|---|
|| | 有一个为真,结果为ture |
! | 如果为真,则变为假 |
位运算
public class Demo1 {
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 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<1);//4
System.out.println(2<<2);//8
System.out.println(2<<3);//16
System.out.println(2<<4);//32
}
}
字符串连接符:+
public class Demo2 {
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);
//字符串连接符 + ,String
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
}
}
优先级
优先级 | 运算符 | 结合行 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、-- | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | <<、>>、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、<<=、>>=、>>>= | 从右向左 |
6、包机制
-
包的本质就是文件夹
-
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
-
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
-
一般利用公司域名倒置作为包名;
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能
import package1[.package2].(classname|*);
7、JavaDoc生成文档
-
JavaDoc命令是用来生成自己API文档的
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
-
Dos操作
IDEA操作
1.
2.