Java的基础语法
一、注释
单行注释: // 注释内容
多行注释:/* 注释内容 /
文档注释(JavaDoc):/** 内容注释 */
二、标识符
关键字:
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符注意点
- 所有的标识符只能以字母、$、或者下划线开始。
- 首字母之后可以是数字、字母、下划线、$。
- 严格区分大小写
- 不可以和关键字一样
三、数据类型
强类型语言:要求变量的使用严格符合规定,所有的变量都必须先定义后才能使用
弱类型语言:要求变量的使用符合规定
Java的数据类型分为两大类:
基本类型(primitive type):8种
引用类型(reference type):3种
public class Demo02{
public static void main(String[] args){
// 八大基本数据类型
//整类
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 30L;//Long类型在数字后面加一个L
// 小数
float num5 = 50.1F;// floatLong类型在数字后面加一个F
double num6 = 3.14159265358979;
// 字符
char name = '国';
// 字符串,String不是关键字,类
// String name = "中国";
// 布尔值: 是非
boolean flag = true;
// boolean flag = false;
}
}
整数扩展知识:
// 二进制 十进制 八进制 十六进制
int i = 10;
int i2 = 010;//八进制
int i3 = 0x10; //十六进制 0~9 A~F
浮点型扩展知识:
// 浮点型扩展
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//false
float d1 = 23552635155225512522f;
float d2 = d1+1
System.out.println(d1==d2);//true
// 原因是float是 有限 离散 舍入误差 大约 接进但不等于
// 这种情况尤其注意在银行业务中,一般使用BigDecimal 数学工具类
字符扩展知识:
// 字符扩展
char c1 = 'a';
char c2 = '中';
System.out.println((int(c1));//97 强制转换
System.out.println((int)c2);//20013 强制转换
// 所有字符的本质还是数字
// 编码 Unicode 2的16次方 = 65536
char c3 = '\u0061';
System.out.println(c3);//a
// 转义字符
// \t 制表符
// \n 换行
// ....
System.out.println("Hello\nWorld!");
/*
Hello
World!
*/
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true
// 对象 从内存分析
什么是字节?
位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中数据处理的基本单位,习惯上用大写的B来表示。
1B = 8bit
字符:是指计算机中使用的字母、数字、字和符号。
- 1 bit表示一位
- 1Byte表示一个字节 1B = 8 b
- 1024B = 1KB
- 1024KB = 1M
- 1024M = 1G
四、类型转换
由于Java是强类型语言,所以要进行运算时,需要用但类型转换。
低 ------------------------> 高
byte,short,char-> int -> long ->float -> double
运算过程中,不同类型的数据先转换成同一类型,然后进行运算。
public class demo 05{
public static void main(String[] args){
int i = 128;
double b = i;
// 强制转换 (类型变量名 高--低
// 自动转换 低--高
System.out.println(i);//128
System.out.println(b);//128.0
/*
注意点:
1、 不能对布尔值进行转换
2、 不能把数据类型转换成不相干等等类型
3、 在把高容量转换到低转换,强制转换
4、 转换的时可能存在内存溢出,或者精度问题!
*/
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
char c = 'a';
int d = c+1;
System.out.println(d);//98
System.out.println((char)d);//b
操作比较大的数时,注意溢出问题:
public class demo06{
// JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;//-1474836480,计算时溢出了
int total2 = money*years;//默认是int,转换之前已经存在问题了?
long total3 = mony*((long)years);//先把一个数转换为Long
System.out.println(tatal3);//20000000000
五、变量
变量是什么:就是可以变化的量!
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName = value;
// 数据类型 变量名 = 值 ;可以使用逗号隔开来声明多个同类型变量。
// 实例变量:从属于对象:如果不自行初始化,这个类型的默认值 0 0.0
// 布尔值:默认是false
// 除了基本类型,其余的都是null
注意事项:
1、每一个变量都有类型,类型可以是基本类型,也可以是引用类型。
2、 变量名必须是合法的标识符。
3、 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量的作用域
- 类变量
- 实例变量
- 局部变量
public class Variable{
static int allClicks = 0;// 类变量
String str = "hello world";//实例变量
public void method(){
int i = 0;//局部变量
}
}
常量:初始化后不能再改变值!不会变化的值。
常量名一般大写。
final 常量名 = 值;
final double PI =3.14;
变量名的命名规范:
- 所有的变量名、方法名、类名:见名知意
- 类成员变量:首字母小写和驼峰原则
- 局部变量: 首字母小写和驼峰原则
- 常量:大写字母和下划线
- 类名:首字母大写和驼峰原则
- 方法名:首字母小写和驼峰原则
六、运算符
Java语言支持如下运算符:
注意:
- 自增和自减的位置不一样对于值的改变不一样
- 逻辑运算符中的短路运算(如:(2==1)&&a++ ,这里前面为假后面的a++不会再执行;||运算符也存在短路,当前面为真时后面的部分不会再执行。)
位运算(二进制):
&:同为1则为1
|:有一个1则为1
^: 不同则为1
~:取反
<<: 左移
>>: 右移
2*8=16 2*2*2*2=16
// 用位运算 效率非常高
// << *2
// >> \2
System.out.println(2<<3);//16
// 扩展赋值运算符
int a = 10;
int b = 20;
a+=b; // a = a+b
a-=b; // a = a-b
// 字符串连接符 +
System.out.println(""+a+b); // 1020
System.out.println(a+b+""); // 30
// 三元运算符
// x ? y : z 如果x = true,则结果为y,否则结果为z
int score = 50;
String type = score <60 ? "不及格":"及格";
System.out.println(type);// 不及格
优先级:
优先级记忆方法:单目乘除为关系,逻辑三目后赋值。
单目运算符:一次作用一个变量的运算符,又叫一元运算符
单目:单目运算符+ –(正负数) ,++ –,!(逻辑非),~(按位取反)
乘除:算数运算符:* / % + - (* / %优先级肯定是大于±的)
为:位运算符:~(按位取反)<<(左移) >>(右移),^(也可以位运算,二进制异或)
关系:关系运算符:> < >= <= == !=
逻辑:逻辑运算符(除!)&& || & | ^
三目:条件运算符A > B ? X : Y
后:无意义,仅仅为了凑字数
赋值:= += -= *= /= %= |= &= ^=
说明:前优先级大于后,比如单目运算符也是位运算符,的优先级是单目级别的。至于赋值运算符中没有见过的自行测试
所谓优先级,就是在表达式中的运算顺序。Java 中常用的运算符的优先级如下表所示:
七、包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
一般利用公司域名倒置作为包名。
为了能够使用一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能 import package1[.package2…].(classname|*);
八、JavaDoc
javadoc命令是用来生成自己API文档的。
参数信息:
- @author 作者名
- @version 版本号
- @ since 指明需要最早使用的jdk版本
- @ param 参数名
- @return 返回值情况
- @throws 异常抛出情况
命令行在java文件所在位置打开命令行运行下面命令
# javadoc -encoding UTF-8 -charset UTF-8 Doc.java
Doc.java是文件名,encoding和charset是设置编码,然后打开生成的index.html文件就是API文档。