004.Java基础语法
文章目录
一、注释、标识符、关键字
(一)注释
◆平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。
◆注释并不会被执行,是给我们写代码的人看的
◆书写注释是一个非常好的习惯;平时写代码一定要注意规范
◆Java中的注释有三种:
- 单行注释 //
- 多行注释 /* */
- 文档注释
(二)关键字
(三)标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
◆标识符注意点
- 所有的标识符都应该以字母A-Z或者a-z、美元符$、或者下划线_开始
- 首字符之后可以是字母A-Z或者a-z、美元符$、下划线_或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 合法标识符举例: age,$salary,value,_1_value
- 非法标识符举例: 123abc,-salary, #abc
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low
二、数据类型
◆强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
(一)分类
Java的数据类型分为两大类
◆基本类型(primitive type)
◆引用类型(reference type)
(二)什么是字节
- 位(bit) :是计算机内部数据储存的最小单位,11001100是一个八位二进制数
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
- 1B (byte,字节) = 8bit (位)
- 字符:是指计算机中使用的字母、数字、字和符号
- 1bit表示1位,
- 1Byte表示一个字节1B=8b。
- 1024B=1KB
- 1024KB=1M
- 1024M=1G
思考:电脑的32位和64位的区别是什么呢?
(三)数据类型拓展和面试题讲解
//============================================
//整数拓展:进制 二进制b 十进制0b 八进制0 十六进制0x
//===========================================
int i = 10;
int i2 = 010; //八进制
int i3 = 0x10; //十六进制0x 0~9 A~F 16
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
//注意:表示进制时末尾添加的0、0x、0b是数字0,不是字母O
//==============================
//浮点数拓展 银行业务怎么表示?钱
// BigDecimal 数学工具类
//================================
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全使用浮点数进行比较
//最好完全使用浮点数进行比较
//最好完全使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
//====================
//字符拓展
//====================
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("Hello\nWorld");
//===============================
String sa = new String( original: "hello world");
String sb = new String( original: "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! 代码要精简易读
三、类型转换
(一)分类
◆由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
低--------------------高
byte, short, char-> int -> long-> float -> double
◆运算中,不同类型的数据先转化为同一类型,然后进行运算。
- 强制类型转换:高到低 (类型)变量名 byte b =(byte)i;
- 自动类型转换:低到高
(二)注意点
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量的时候,强制转换
-
转换的时候可能存在内存溢出,或者精度问题!
-
JDK7新特性,数字之间可以用下划线分割
比如int money = 10_0000_0000;输出money发现值为1000000000.
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; //-1474836480 ,计算的时候溢出了
long total2 = money*years; //默认是int,转换之前已经存在问题了
long total3 = money*((long)years); //先把一个数转换为Long
System.out.println(total3);
四、变量、常量
(一)变量
◆变量是什么:就是可以变化的量!
◆Java是一种强类型语言,每个变量都必须声明其类型.
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域.
type varName[=value][{,varName[=value]}];
//数据类型 变量名=值;可以使用逗号隔开来声明多个同类型变量.
◆注意事项:
●每个变量都有类型,类型可以是基本类型,也可以是引用类型
●变量名必须是合法的标识符
●变量声明是一条完整的语句,因此每一个声明都必须以分号结束
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //Long类型要在数字后面加个L
//小数:浮点数
float num5 = 50.1F; //float类型要在数字后面加个F
double num6 = 3.141592653589793238462643;
//字符
char name = 'x';
//字符串,String不是关键字,类
//String namea = "大家好";
//布尔值:是非
boolean flag = true;
//boolean flag = false;
(二)变量作用域
- 类变量
- 实例变量:从属于对象;如果不自行初始化,就为这个类型的默认值。整数类型默认值0,浮点类型默认值0.0,布尔值默认是false。除了基本类型,其余的默认值都是null。
- 局部变量:必须声明和初始化值。
public class Variable{
static int allClicks=0;//类变量
String str="hello world";//实例变量
public void method(){
int i=0; //局部变量
}
}
(三)变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则: 除了第一个单词以外,后面的单词首字母大写monthSalary,lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线: MAX VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
(四)常量
◆常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
◆所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名=值;
final double PI=3.14;
◆常量名一般使用大写字符。
五、运算符
Java语言支持如下运算符:
-
分享一个IntelliJ IDEA快捷键:ctrl+d 作用是复制当前行到下一行。
-
关系运算符返回的结果:正确,错误;布尔值。
-
++自增,–自减;一元运算符;int b= a++是执行完这行代码后,先给b赋值,再自增;int c= ++a是执行完这行代码前,先自增,再给c赋值。
-
很多运算,我们会使用一些工具类来操作。比如要计算幂运算3的2次方:double pow = Math.pow(3,2)。
-
逻辑运算符:与(and) ,或(or) ,非(取反)。
boolean a = true; boolean b = false; System.out.println("a && b: "+(a&&b)); //逻辑与运算:两个变量都为真,结果才为true System.out.println("a || b:"+(a||b)); //逻辑或运算:两个变量有一个为真,则结果才为true System.out.println("! (a && b) :"+!(a&&b)); //如果是真,则变为假,如果是假则变为真
-
注意短路运算。短路与:只要碰到了false或者等价于false的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值。短路或:只要碰到了true或者等价于true的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值。需要注意的是:&& 和 || 的结果不一定是布尔类型,短路或一般用于设置函数的默认参数。
-
位运算:效率极高 A=0011 1100 B = 0000 1101 A&B = 0000 1100 A/B= 0011 1101 A^Β = 0011 0001 ~B = 1111 0010 << *2 >> /2
-
字符串连接符+。
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,则结果为y,否则结果为z。
六、包机制、JavaDoc
(一)包机制
◆为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:
package pkg1[. pkg2[. pkg3…]];
◆一般利用公司域名倒置作为包名;
◆为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可
完成此功能
import package1[. package2…]. (classname | *);
(二)JavaDoc
javadoc命令是用来生成自己API文档的
◆参数信息
- @author 作者名
- @version版本号
- @since指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况