java基础语法
1编译型与解释型
计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言(0101),所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:编译 、解释。由此高级语言也分为编译型语言和解释型语言。
编译型语言源程序编译后即可在该平台运行,
解释型语言是在运行期间才编译。
所以前者运行速度快,后者跨平台性好。
1.1 编译型
运行时脱离开发环境,运行效率高;
与特定平台相关,一般无法抑制到其他平台;
C、C++、C#
1.2解释型
专门的解释器,解释成,特定平台的机器码,并立刻执行。
每次运行都将源代码解释成机器码,效率低;
可移植性好,平台无关性;
Python、JavaScript
1.3java
编译型:所有的java代码都是要编译。
解释型:编译后不能直接运行,解释运行在JVM上。
2IDEA
psvm、sout
目前最常用的java开发IDE
IDE:集成开发环境(Integrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
empty工程时,添加module,出现src,配置sdk版本与language level
红点标注行,不采用正常启动程序,采用debug,断点测试
3注释
Annotations注解
Comments注释
有趣的注释代码
3.1单行注释
//zhushi
3.2多行注释
/*zhushi*/
3.3文档注释
//与JavaDoc联合使用
/**
*@Description HelloWorld
*@Author hhhh
*/
4标识符
java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关键字(keywords)是Java语言规范约定用于表达语法含义的单词,截止JDK8.0,这部分单词总共有50个。
保留关键字:少数单词,目前还没有明确的语法含义,但是Java语言也约定它是关键字,随着Java的发展,将来可能会被赋予语法含义如列表中的const
、goto
。
String是一个Java基础库中常用类的类名,并不是关键字。
4.1注意点
大小写敏感;
首字符字母,美元$,下划线。
首字母一些特殊符号% #一般也会报错,一般采用字母、数字、美元符组合
可以用中文,但一般不用例如
String 哈哈哈="测试";
5数据类型
5.1强类型与弱类型
java是强类型语言:要求变量的使用要严格符合规定、所有变量必须先定义才能使用。
安全性较好,但效率低。
弱类型语言:变量使用可以不符合规定,javascript,虽然随意,但有自己的编辑器,也对相应做了规范。
5.2基本数据类型与引用数据类型
long number=123L;//要在数字后加L
float numberf=123f;//要在数字后加f,默认的浮点是double
位bit,计算机内部存储的最小单位;
字节byte=8bit,计算机中数据处理的基本单位;
5.3电脑32位与64位的区别
64位操作系统只能安装正在64位电脑上(CPU64位),同时需要安装64位程序以发挥64位最大优势;
32位操作系统可以安装在32位机、64位机上;
64位相对32位,64位一次取8字节,32位一次取4字节,性能理论提高一倍;
电脑内存,64位可以扩到128g,32位最大4g。
5.4常见问题
二进制0b 十进制 八进制0 十六进制0x
浮点数: 有限、离散、舍入误差、大约、接近但不等于
最好完全避免使用浮点数进行比较;
银行业务怎么表示:不能用float表示,一般用BigDecimal工具类处理;
低转高不用其他操作,高转低强制转换;
不能对布尔值进行转换,布尔是按位的,只有0和1,两种可能占一位,是完全不相干的;
不能把对象类型转换为不相干的类型;
转换的时候可能崔仔内存溢出,或者精度问题;
jdk7的新特性 ,数字较大时可以加下划线
public class JavaTest {
public static void main(String[] args) {
int money=10_0000_0000;
int years=20;
long total=money*years;//1=-1474836480,计算结果溢出,默认是int的精度,转换前已经出现问题
long total2=money*((long)years);//2=20000000000,得到正确结果,计算之前就已经把精度解决掉
long total3=(long)money*years;//3=20000000000,得到正确结果,计算之前就已经把精度解决掉
long total4=(long)(money*years);//4=-1474836480,计算结果溢出,默认是int的精度,转换前已经出现问题
System.out.println("1="+total);
System.out.println("2="+total2);
System.out.println("3="+total3);
System.out.println("4="+total4);
}
}
运算中,不同类型的数据先转化为同一类型,然后进行运算
6变量、常量、作用域
类名:首字母大写+驼峰原则:LoginPhone
变量名:首字母小写+驼峰原则:loginPhone
常量名:大写字母和下划线:LOGIN_PHONE
方法名:首字母小写+驼峰原则:loginPhone()
6.1变量
6.1.1变量是什么
就是可以变化的量;
java是一种强类型语言,每个变量都必须声明其类型;
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
6.1.2类变量
6.1.3实例变量
表示数值类型:默认0 0.0。
布尔值:默认是false
除基本数据类型外:默认null
6.1.4局部变量
6.2常量
Constant,初始化(initialize)后不能再改变值,不会变动的值。
常量名一般使用大写字符。
修饰符,不存在先后顺序
static final double PI=3.14;
final static double PI=3.14;
7运算符
7.1位运算
A=0011 1100
B=0000 1101
A&B=0000 1100 与
A|B=0011 1101 或
A^B=0011 0001 异或
~A=1100 0011 非
2*8=16=2*2*2*2
<<左移 相当于乘以2
>>右移,补符号位,正数补0,负数补1
<<<无符号左移,与<<相同
>>>无符号右移,逻辑右移,最高位补0
(1)10=(0000 0001)
(2)10=(0000 0010)
(4)10=(0000 0100)
(8)10=(0000 1000)
(16)10=(0001 0000)
7.2三元运算
//?:
//x?y:z
//如果x为真则y,假则z
8包机制
一般利用公司域名倒置作为包名;com.baidu.www, com.baidu.baike,com.baidu.operate
9JavaDoc
javadoc命令是用来生成自己API文档的
jdk帮助文档,一般看8版本;
9.1参数信息
@author作者名
@version版本号
@since指明需要最早使用的jdk版本
@param参数名
@return返回值情况
@throws异常抛出情况
9.2生成文档
9.2.1命令行
设置字符UTF-8避免乱码
F:\test\src\com\hhh\base>
javadoc -encoding UTF-8 -charset UTF-8 JavaDocTest.java
charset 是 character set 的简写,即字符集。
encoding 是 charset encoding 的简写,即字符集编码,简称编码
编码是依赖于字符集的,就像代码中的接口实现依赖于接口一样;
一个字符集可以有多个编码实现,就像一个接口可以有多个实现类一样。
9.2.1IDEA
在IDEA中选择工具(Tool)选项卡打开并选择Generate JavaDoc