Java语法基础
java语法
注释
单行注释
// + (内容)
多行注释
/* (内容) */
文档注释
- JavaDoc 命令是用来生成自己的API文档。
- 参数信息
- @author作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @return 返回值情况
- @throws 异常抛出情况
tools - generate JavaDoc...
设置 Locale
zh_CN
设置 Other command line arguments
-encoding UTF-8 -charset UTF-8 -windowtitle "接口文档3.4" -link http://docs.Oracle.com/javase/7/docs/api
/** (内容) */
标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
- 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始。
- 首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划线(_)或者数字的任何字符组合。
- 不能使用关键词作为变量名或者方法名。
- 标识符是大小写敏感的。
- 可以使用中文命名但是不建议使用。
关键词
class类
数据类型
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
Java是强类型语言。所以所有变量先定义再使用。
弱类型语言
对变量的数据类型界限不是很清楚。
例如:在VB Script中,可以将字符串 12 和整数 3 进行连接得到字符串 123,然后可以把它看成整数 123,而不需要显式转换。
Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
基本数据类型
| 类型 | 字节 | 范围 |
|---|---|---|
| byte(整数型) | 1字节 | -128~127 |
| short(整数型) | 2字节 | -32768~32767 |
| int(整数型) | 4字节 | -2147483648~2147483647 |
| long(整数型) | 8字节 | -9223372036854775808~... |
| float(浮点型) | 4字节(8位指数值) | ±2128到±2(-149) |
| double(浮点型) | 8字节(11位指数值) | ±21024到2(-1074) |
| char(字符类型) | 2字节 | 所有字符(Unicode编码) |
| boolean类型 | 1位 | true or false |
//八大数据类型
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L;//long类型要在数字后面加个L或者l
//小数;浮点数
float num5 = 40.1F;//float类型要在数字后面加个f或者F
double num6 = 3.14159;
//字符
char name = '国';//字符只有一个字符
//字符串,String不是关键字,是类
String name2 = "大可爱";
//布尔值,表示是非
boolean flag1 = true;
boolean flag2 = false;
//====================================================
//整数拓展 进制 二进制0b 十进制 八进制0 十六进制
int n1 = 10;
int n2 = 010;
int n3 = 0x10;
//====================================================//浮点数拓展 //====================================================
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好不用浮点数进行比较 精确比较用BigDecimal
//比较大的数字进行输入时可以使用_下划线来分割数字,不影响输出和计算。
float f1 = 0.1f; //0.1
double d1 = 1.0/10; //0.1
System.out.println(f1==d1); //false
//====================================================
//字符拓展 //====================================================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);//a
System.out.println((int)c1);//97 强制转换
System.out.println(c2);//中
System.out.println((int)c2);//20013 强制转换
//所有的字符本质还是数字
//字符在java中采用unicode编码 占用2字节 0-65536
//U0000~UFFFF
char c3 = '\u0052';
System.out.println(c3);//R
//====================================================
//转义字符
//====================================================
// \t 制表
// \n 换行
// ....
System.out.println("hello\nworld");
//====================================================
//布尔类型 //====================================================
boolean flaga = true;
if(flaga==true){} //新手
if(flaga){} //老手
//java代码要精简易读
基本引用类型
类
接口
数组
类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
\\低------------------------------------>高
\\byte,short,char->int->long->float->double
\\运算中,不同类型的数据先转化为同一类型,然后进行运算。
int a = 128;
byte b = (byte)a; //数据溢出
double c = a; //冗余
//强制转换 (类型)变量名 高->低
//自动转换 直接引用 低->高
System.out.println(a);//128
System.out.println(b);//-128
System.out.println(c);//128
System.out.println("==============================");
System.out.println((int)23.7);//23
System.out.println((int)-45.8f); //-45 System.out.println("==============================");
char d = 'a';
int f = d+1;
System.out.println(f);//97
System.out.println((char)f);//b
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象值转换为不相干的类型
3.在把高容量转换为低容量的时候,强制转换。
4.转换的时候可能存在数据溢出,或者精度问题。
*/
变量
-
Java时一种强类型语言,每个变量都必须声明其类型。
-
Java变量时程序中的最基本的存储单元,其要素包括变量名,变量类型和作用域。
tpye varName [=value][{,varName=[=value]}]
//数据类型 变量名 = 值 ;可以用逗号隔开来声明多个同类型变量。
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量作用域
- 类变量
- 实例变量
- 局部变量
public class demo06 {
//属性:变量
//实例变量;从属于对象;
//实例变量如果不进行初始化,则为默认值。
//布尔值:默认为false 除了基本类型,其余默认值都为null
//类变量 前面都有static
static int salary = 2500;
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
//局部变量只在方法里面有效
int i = 10;
System.out.println(i);//10
//变量类型 变量名字 = new demo06();
demo06 demo06 = new demo06();
System.out.println(demo06.age);//0
System.out.println(demo06.name);//null
System.out.println(salary);//2500
}
//其他方法
public void add(){
}
}
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
常量
-
常量:初始化后不能再改变值,不会变动的值。
-
所谓常量可以理解成一种特殊的变量。他的值被设定后,再程序运行过程中不允许被改变。
-
常量名一般使用大写字符。
final 常量名 = 值;
final double PI = 3.14;
运算符
算术运算符
| 算术运算符 | 名称 | 例子 |
|---|---|---|
| + | 加法 | 5+12=17 |
| - | 减法 | 25-10=15 |
| * | 乘法 | 3*8=24 |
| / | 除法 | 24/6=3 |
| % | 求余 | 24%7=3 |
| ++ | 自增1 | int i = 5;i++ |
| -- | 自减1 | int i = 5;i-- |
public class Demo03 {
public static void main(String[] args) {
int a = 4;
int b = a++;//a++ 先赋值再自增
int c = ++a;//++a 先自增再赋值
//a++不改变数据类型
System.out.println(a);//6
System.out.println(b);//4
System.out.println(c);//6
//幂运算 2^3
double pow =Math.pow(2,3);
System.out.println(pow);//8
}
}
赋值运算符
赋值运算符是指为变量或常量指定数值的符号。如可以使用 “=” 将右边的表达式结果赋给左边的操作数。
| 运算符 | 名称 | 举例 |
|---|---|---|
| = | 赋值 | c=a+b将把a+b得到的值赋给c |
| += | 加等于 | c+=a等价于c=c+a |
| -= | 减等于 | c-=a等价于c=c-a |
| *= | 乘等于 | c * =a等价于 c=c * a |
| /= | 除等于 | c /=a等价于 c=c / a |
| %= | 模等于 | c % =a等价于 c=c % a |
关系运算符
比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
| 比较运算符 | 名称 | 举例 | 结果 |
|---|---|---|---|
| > | 大于 | a=5; b=2; a>b; | true |
| < | 小于 | a=5; b=2; a<b; | false |
| >= | 大于等于 | a=5; b=2; a>=b; | true |
| <= | 小于等于 | a=5; b=2; a<=b; | false |
| == | 等于 | a=5; b=2; a==b; | false |
| != | 不等于 | b=2; b!=2; | false |
逻辑运算符
逻辑运算符主要用于进行逻辑运算。Java 中常用的逻辑运算符如下表所示:
| 逻辑运算符 | 名称 | 举例 | 结果 |
|---|---|---|---|
| && | 与 | a&&b | 如果a与b都为true,则返回true |
| || | 或 | a||b | 如果a与b任一为true,则返回true |
| ! | 非 | !a | 如果a为false,则返回true,取相反结果 |
| ^ | 异或 | a^b | 如果a与b有且仅有一个为ture,则返回true |
//逻辑运算符
public class Demo04 {
public static void main(String[] args) {
//与(and) 或 (or) 非(取反) 异或
Boolean a = true;
boolean b = false;
System.out.println(a && b);//与 false
System.out.println(a || b);//或 true
System.out.println(!(a && b));//非 true
System.out.println(a ^ b);//异或 true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);//只要判断第一个符合运算,第二个就不进行运算
System.out.println(d);//false
System.out.println(c);//5
}
}
&& 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
|| 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)
注意:短路与(&&)和短路或(||)能够采用最优化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路与和短路或。
位运算符
进行位运算时,先将数据转换成二进制。
进行位操作时,除long型外,其他类型会自动转成int型,转换之后,可接受右操作数长度为32。进行位运算时,总是先将短整型和字节型值转换成整型值再进行移位操作的
package day02;
public class Demo02 {
/*
* 与运算& (两者都为1,结果为1,否则为0) 5&9为例子
* 0000 0000 0000 0000 0000 0000 0000 0101 5的原码
* 0000 0000 0000 0000 0000 0000 0000 1001 9的原码
* 0000 0000 0000 0000 0000 0000 0000 0001 与运算结果为1
*/
/*
* 或运算| (两者一者为1,结果为1,都不为1,结果为0)5|9为例
* 0000 0000 0000 0000 0000 0000 0000 0101 5的原码
* 0000 0000 0000 0000 0000 0000 0000 1001 9的原码
* 0000 0000 0000 0000 0000 0000 0000 1101 或运算结果为13
*/
/*
* 非运算~ (直接取反) 5为例
* 0000 0000 0000 0000 0000 0000 0000 0101 5的原码
* 1111 1111 1111 1111 1111 1111 1111 1010 补码
* 1111 1111 1111 1111 1111 1111 1111 1001 反码
* 1000 0000 0000 0000 0000 0000 0000 0110 非运算结果为-6
*/
/*
* 异或运算^(不相同时,等于1,相同时等于0) 5^9为例
* 异或运算满足交换律
* 一个数跟自己异或为0,一个数和0异或为自身(利用这个可以交换值)
* 0000 0000 0000 0000 0000 0000 0000 0101 5的原码
* 0000 0000 0000 0000 0000 0000 0000 1001 9的原码
* 0000 0000 0000 0000 0000 0000 0000 1100 异或运算结果为12
*/
/*
* 左移 << (末尾补0 移动1位相当于乘2) 5<<1 为例
* 0000 0000 0000 0000 0000 0000 0000 0101 5的原码
* 0000 0000 0000 0000 0000 0000 0000 1010 左移结果为10
*/
/*
* 右移 >> (负数:最高位补符号位1 正数:最高位补符号位0 移动1位相当于除2) -8 >>2为例
* 1000 0000 0000 0000 0000 0000 0000 1000 -8的原码
* 1111 1111 1111 1111 1111 1111 1111 0111 -8的反码
* 1111 1111 1111 1111 1111 1111 1111 1000 -8的补码
* 1111 1111 1111 1111 1111 1111 1111 1110 结果的补码
* 1111 1111 1111 1111 1111 1111 1111 1101 结果的反码
* 1000 0000 0000 0000 0000 0000 0000 0010 结果为-2
*/
/*
* 无符号右移 >>>(无论是整数还是负数,右移最高位一律补0) -8>>>1
* 1000 0000 0000 0000 0000 0000 0000 1000 -8的原码
* 1111 1111 1111 1111 1111 1111 1111 0111 -8的反码
* 1111 1111 1111 1111 1111 1111 1111 1000 -8的补码
* 0111 1111 1111 1111 1111 1111 1111 1100 结果为2147483644
*/
public static void main(String[] args) {
int a = 5&9;
System.out.println(a);//1
a = 5|9;
System.out.println(a);//13
a = ~5;
System.out.println(a);//-6
a = 5^9;
System.out.println(a);//12
a = 5<<1;
System.out.println(a);//10
a = -8>>2;
System.out.println(a);//-2
a = -8>>>1;
System.out.println(a);//2147483644
int num1=1,num2=2;
num1=num1^num2;
num2=num2^num1;
//num2=num2^(num1^num2) 此处num?为原始值
//num2=num2^num2^num1 异或本身,结果为0
//num2=0^num1 一个数异或0,结果为本身
//num2=num1
num1=num1^num2;
//num1=(num1^num2)^num1
//num1=num1^num1^num2 异或本身,结果为0
//num1=0^num2 一个数异或0,结果为本身
//num1=num2
System.out.println(num1+":"+num2);//2:1
}
}
| 含义 | 运算符 | 举例 |
|---|---|---|
| 左移 | << | 末尾补0 相当于乘2 |
| 右移 | >> | 负数:最高位补符号位1 正数:最高位补符号位0 相当于除2 |
| 无符号右移 | >>> | 无论是整数还是负数,右移最高位一律补0 |
| &(位与) | $ | 当相对应的位都为1时,等于1,否则等于0 |
| |(位或) | | | 当相对应的位有一个为1时,等于1,否则等于0 |
| ^(异或) | ^ | 当相对应的位不相同时,等于1,相同时等于0 |
| ~ (取反) | ~ | 1等于0,0等于1 |
public class Demo01 {
public static void main(String []args){
int a = 1;
int b = 2;
boolean c = a>b && b>a || ++a==b;
System.out.println(a);//2
//在进行多元逻辑运算时。优先级 算术运算符 > 逻辑运算符
}
}
条件运算符
条件运算符( ? : )也称为 “三元运算符”。
语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值
例如:
public class HelloWorld{
public static void main(String[] args) {
int score=68;
String mark =(score>=60)?"及格":"不及格";
System.out.println("考试成绩如何:"+mark);
}
}
包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名地命名空间。(分包管理类)
-
包语句地语法格式为:
package pkg1[.pkg2[.pkg3...]]; -
一般利用公司域名倒置作为包名。
www.baidu.com
com.baidu.www
-
为了能够使用某一包地成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能。
import package1[.package2...].(classname|*); // * 通配符

浙公网安备 33010602011771号