Java随笔4:Java基础语法
(一)注释
单行注释:只能注释一行文字 / 注释 /
多行注释:可以注释一段文字 /* 注释 */
文档注释:JavaDoc /** 注释 */
理解:
-
注释并不会被执行,是写给写代码的人看的
-
书写术士是一个非常好的习惯
-
平时书写代码一定要注意规范
(二)标识符和关键字
1.关键字
2.标识符
Java所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符
3.标识符注意点
- 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z或者a-z)、美元符($)、或者下划线(_)或数字的如何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 可以使用中文命名,但是一般不建议这区使用,也不建议使用拼音,很Low
(三)数据类型
-
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
-
Java的数据类型分为两大类
-
基本类型
//八大基本数据类型: //1.整数 int num1 = 10; //最常用 byte num2 = 20; short num3 = 30; long num4 = 30L; //long类型要在数字后面加个L //2.小数:浮点数(尽量不用浮点数进行比较) float num5 = 50.1F; //float类型要在数字后面加个F/f double num6 = 3.1415926; //3.字符 char num7 = '好'; //(单个字符) //字符串:String不是关键字,是类 //String num8 = "以后";(多个字符) //4.布尔值:是非 boolean flag = true; //boolean flag = false;
-
引用类型
-
(四)类型转换
-
由于Java是强类型语言,所以要进行有些运算时,需要进行类型转换。
从低容量到高容量:
-
运算中,不同类型的数据先转化为同一类型,然后再进行运算。
-
强制类型转换:(类型)变量名 ( 高—>低)
-
自动类型转换: ( 低—>高)
public class Demo03 { public static void main(String[] args) { int i = 128; byte b1 = (byte) i; //强制转换,但byte的最大值为127,内存溢出 double b2 = i; //自动转换 } }
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在吧高容量转换到低容量的时候,强制转换
- 强制转换时可能存在内存溢出的问题,或者精度问题!
System.out.println((int)23.7);//23,精度丢失
System.out.println((int)-45.89);//-45,精度丢失
常见问题:
当操作比较大的数的时候,注意溢出问题。引入JDK新特性,数字之间可以用下划线分割。
public class Demo03 {
public static void main(String[] args) {
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);
}
}
(五)变量、常量、作用域
1.变量
-
变量就是可以变化的量。
-
Java是强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
注意事项:
- 每个变量都有类型,类型可以是基本类型(八大基本类型),也可以是引用类型(String)。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以英文分号结束。
2.变量的作用域
-
类变量 :static
-
实例变量:从属于对象:如果不自行初始化,这个类型的默认值为0/0.0。
布尔值的默认值为false。
除了基本类型,其余的默认值都为null。
-
局部变量:必须声明和初始化值
public class Demo04 {//类中包含属性(变量)和方法
//1.类变量 static
static double salary = 2500;
//2.实例变量
String name;
int age;
//main方法
public static void main(String[] args) {
//3.局部变量
int i = 10;
System.out.println(i);//10
//实例变量:变量类型 变量名字 = new Demo8();
Demo04 demo04 = new Demo04();
System.out.println(demo04.name);//null
System.out.println(demo04.age);//0
//类变量
System.out.println(salary);//2500.0
}
}
3.常量
-
常量:初始化之后不能再改变值!值不会变动。
-
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
(final 变量名 = 值;)
-
常量名一般使用大写字符
public class Demo05 {
//修饰符,不存在先后顺序
static final double PI = 3.12;
public static void main(String[] args) {
System.out.println(PI);//3.14
}
}
4.变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary(除了第一个单词以外,后面的单词首字母大写)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写驼峰原则:run(),runRun()
(六)基本运算符
Java语言支持如下运算符:
-
算术运算符:+,-,*,/,%(取余/求摸),++(自增),–(自减)
public class Demo01 { public static void main(String[] args) { int a= 10; byte b = 20; short c = 30; long d = 30230L; double e = 20; System.out.println(a+b+c+d);//30290 long System.out.println(a+b+c);//60 int System.out.println(a+b);//30 int System.out.println(a+c);//40 int System.out.println(a+b+c+d+e);//30310.0 double //运算结果的数据类型为参与运算的变量中最高优先级的数据类型 } }
-
赋值运算符:=
-
关系运算符:>,<,>=,<=,==,!=instanceof(关系运算符返回的结果为true或false)
-
逻辑运算符:&&(与),||(或),!(非)
- &&(与):两个变量都为真,结果才为true(有假为假,全真为真)
- ||(或):两个变量有一个为真,则结果才为true(有真为真,全假为假)
- !(非/取反):如果是真则变为假,如果是假则变为真(非真即假,非假即真)
-
位运算符:&(与),|(或),^(亦或),~(取反),>>(右移),<<(左移),>>>(了解!!!)
/* A = 0011 1100 B = 0000 1101 A&B = 0000 1100 //有0为0,全1为1 A|B = 0011 1101 //有1为1,全0为0 A^B = 0011 0001 //相同为0,不同为1 ~B = 1111 0010 //取反 */
-
条件运算符:?:
例:(x ? y : z)如果x==true,则结果为y,否则结果为z
-
扩展赋值运算符:+=,-=,*=,/=
例:(a+=b—>a = a+b)
重点:
- b = a++; //执行完这行代码后,先给b赋值,a再自增
- c = ++a; //执行完这行代码后,a先自增,再给b赋值
扩展:
-
幂运算:很多算法可以借助一些工具类来操作实现,如Math(数学类)—>Math.pow(2,3) (2的3次方)
-
*面试题(位运算符):如何快速计算2*8?—>使用位运算的右移>>(/2)和左移<<( 2),效率极高!!!
-
面试题(字符串连接符):(String类)""+a+b="ab"
int a = 10; int b = 20; System.out.println(""+a+b);//结果为1020 System.out.println(a+b+"");//结果为30
-
运算符优先级:
(七)包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
-
包语句的语法格式为:
-
一般利用公司域名倒置作为包名:www.baidu.com(公司域名)—>com.baidu.www(包名)
-
为了能够使用某一个包的成员,我们需要在Java程序在明确导入该包(注意包名不要重复)。使用“import”语句可以完成此功能:
即:如import com.pan.base.name,或导入这个包下所有的类import com.pan.base.*
(八)JavaDoc生成文档
-
javadoc命令是用来生成自己API文档的:
- 在cmd命令行中输入javadoc 参数 Java文件(参数可为-encoding UTF-8 -charset UTF-8使输出的中文或其他更清晰)
- API文档:(jdk帮助文档)https://docs.oracle.com/javase/8/docs/api/
-
参数信息:
/** *@author 作者名 *@version 版本号 *@since 指明需要最早使用的jdk版本 *@param 参数名 *@return 返回值情况 *@throws 异常抛出情况 */