java基础阶段之二
变量
什么是变量:内存中的一个存储区域,该区域要有自己的数据类型、变量名,该区域的数据可以在同一数据类型的范围内可以不断变化数值;
定义变量作用:用来不断存放同一类型的数据,并且可以重复使用。
java是一种强类型语言,每个变量都必须声明其类型,java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
格式:
//数据类型 变量名 = 初始化值; 可以使用逗号隔开来声明多个同类型变量
//type varName = value {,varName = value}
int i = 10;
int i1 = 100,i2 = 200; //为了程序可读性尽量不使用此声明
String name = "张三";
char x = 'X';
double pi = 3.1415;
可以通过变量名访问指向的内存区域中存储的值。
注意事项:
-
java是强类型必须先声明后使用
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型
-
需要进行初始化后才能使用变量
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,所以必须以分号“;”结束
变量作用域
public class Test {
static int allClicks = 0 ; //类变量
String str; //实例变量
public void method(){
int i = 0 ; //局部变量
str = "hello";
allClicks = 2500;
}
}
-
类变量
类变量 又称静态变量,作用范围在类中的所有方法,但是其他类是使用不了的。
-
实例变量
作用范围在类中的所有方法,但是其他类是使用不了的。如果不初始化值,系统会给默认初始化值,其中如果是基本数值类型,则系统会默认赋值为“0”、Boolean类型默认赋值为“false”、引用类型会默认赋值为“null”。
-
局部变量
局部变量 又称内部变量,必须声明和初始化值,作用范围仅限在某个方法的{}中使用,其他方法使用不了。
常量
初始化后不再改变的值,不会变动的值,固定的值。
//final 数据类型 常量名 = 值;
final double PI = 3.14;
所谓常量可以是一种特殊的变量,一旦赋予值后,在程序的运行中不运行再被改变。常量以final修饰符修饰,final 表示“最终的”。常量名一般是大写字符形式。
变量的命名规范:
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Max,MaxNum
-
方法名:首字母小写和驼峰原则
5、运算符
算术运算符:
-
“ + ” 正号、“ - ” 负号
-
“ + ” 加号、 “ - ” 减号 “ * ” 乘号 “ / ” 除号 “%” 取模
-
“ ++ x ” 自增(先运算后取值) “x++” 自增(先取值后运算)
-
“ --x ” 自减(先运算后取值) “x--” 自减(先取值后运算)
-
取模相当于-->取余数: 25%4= 1(25除 4 余1--->25/4=6...1(余数))
//一元运算符 ++ -- 自增 自减
int a = 3;
int b = a++;//a++ 先将a的值3赋值给b,再自增 a=a+1 = 4
//结果:b=3 a=4
int c = ++a;//++a 先自增 a=a+1 = 5, 再将a的值5赋值给c
//结果:c=5 a=5
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
System.out.println("-------");
int d = 3;
int e = d--;//d-- 先将d的值3赋值给e,再自减 d=d-1 = 2
//结果:e=3 d=2
int f = --d;//--d 先自减 d=d-1 =1, 再将d的值1赋值给f
//结果:f=1 d=1
System.out.println(d);//1
System.out.println(e);//3
System.out.println(f);//1
//二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 4;
System.out.println(a+b);//30
System.out.println(a-b);//-10
System.out.println(a*b);//200
System.out.println(a/(double)b);//0.5 注意小数
System.out.println(c % d);//1
拓展:
long a = 121212121212L;
int b = 123;
short c = 10;
byte d = 8;
//涉及到隐式自动类型转换,
// 原因之一系统默认整数的基本类型是int,
// 当遇到比int低的类型进行运算时会自动转换为int类型进行运算
// 原因之二 当有比int类型高的数据类型参与运算,
// 为了不内存溢出,系统会自动将类型转换提升到当前运算中最大的数据类型再输出
System.out.println(a+b+c+d); //结果为long类型
System.out.println(b+c+d); //结果为int类型
System.out.println(c+d); //结果为int类型
赋值运算符: =
赋值:将一个值存储到另外一个已经定义好并且是相同类型的值中
int i = 10;
i = 20;
System.out.println(i);//20
关系运算符:>,<,>=,<=,==,!=
//关系运算符返回的结果:正确(true),错误(false)-->布尔值
int a = 10;
int b = 20;
System.out.println(a > b);//false
System.out.println(a < b);//true
System.out.println(a == b);//false
System.out.println(a != b);//true
比较运算符的结果都是boolean型,也就是true,或者false
逻辑运算符:&&,||,!
-
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6这样是错误写法,应该写成 x>3 && x<6.
-
“&” 和“&&”的区别:
单&,左边无论真假,右边都执行运算;
双&,如果左边为真,右边参与运算,如果左边为假,右边不参与运算。
-
“|”和“||”的区别同理。
-
异或(^) 与(|)的不同处:当左右都为true时,结果为false。
异或,求异。
//“&&”逻辑与 “||”逻辑或 “!”非 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)); //逻辑非运算:原本为真,则变为假,或者原本为假,则变为真 //短路运算 int c = 5; boolean d =(c < 4) && (c++ < 4); //这里因为 c<4 是错误的,所以不执行 后面的c++ < 4 //短路与的特点之一:如果左边为真,右边参与运算,如果左边为假,右边不参与运算。 System.out.println(d); System.out.println(c);
位运算符:&,|,^,~,>>,<<,>>>
<< 左移、>>右移、>>>无符号右移、&与运算、|或运算、^ 异或运算、~反码
位运算大多与进制有关
如:
A = 0011 1100
B = 0000 1101
A & B --> 0000 1100
二进制的与(&)运算:同位 & 运算时,两者对应位都是1结果为1,其他情况为0
A | B --> 0011 1101
二进制的或(|)运算:同位 | 运算时,两者对应位都是0结果0,其他情况为1
A ^ B --> 0011 0001
二进制的异或(^)运算:同位 ^ 运算时,两者对应位都是0 或者都是1的时候结果 0,其他情况都是1
~ B --> 1111 0011
二进制的取反(~)运算: 如果两者对应位都是0则取反,结果0变1,
如果两者对应位都是1则取反,结果1变0,其他情况为1
2 * 8 = 16 == 2 * 2 * 2* 2 == 2 << 3
与计算机底层交互,效率极高
左移 << m<<n --> m*2的 n次方
右移>> m>>n --> m*2的 -n次方
无符号右移>>> m>>n --> 正数的>>>与>>一致
根据二进制进行左移、右移
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
...
三元(条件)运算符 ? :
格式:
(条件表达式)?表达式1:表达式2;
其中条件表达式: 为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;
//x ? y : z
//如果x == true ,则结果为y : 否则结果为 z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type); //及格
扩展赋值运算符:+=,-=,*=,%=,/= ,
+= ( x + =1 ->x = x+1), -= (x - =1 ->x = x-1),
*= (x * = 1 -> x = x * 1), %= (x % =1 -> x = x % 1), /= (x / =1 -> x = x / 1),
double a = 10.0;
int b = 20;
a += b; //a = a+b; //30.0
a -= b; //a = a-b; //-10.0
a *= b; //a = a*b; //200.0
a %= b; //a = a%b; //10.0
a /= b; //a = a/b; //0.5
“ + ” 也可以是 字符串的连接符 “He”+“llo”
(String (必须带双引号)与 任何基本数据类型用+ 号链接,基本数据类型的值将自动转化为字符串类型,最终输出的都是字符串)
System.out.println(3+4+"Hello"); //结果7hello
System.out.println("Hello"+3+4); //结果hello34
System.out.println('a'+1+"Hello"); //结果98hello
System.out.println("Hello"+'a'+1); //结果helloa1
运算的优先级
其中 1 级最高,14 级最低, 同级从左向右(高到低)。
-
() []
-
! +(正) -(负) ++ , --
-
* / %
-
+(加) -(减)
-
<< >> >>>
-
< <= > >= instanceof
-
== !=
-
&
-
^
-
|
-
&&
-
||
-
? :
-
=、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>=
6、包机制、JavaDoc
包机制
为了更好地组织,java提供包机制,用于区别类名的命名空间。
包就是文件夹,为了文件命名重复可用而存在,只要存放在不同的包下,或者包的不同层即可。
一般利用公司域名倒置作为包名,如:www.baidu.com ---> com.baidu.www
包机制:为了结构更加清楚,有序。
包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]]
如: package org.gdpi.annotation;
导入架包:
导入架包语句必须放在包语句下面。
为了能够使用某一个包的成员,需要在java程序中明确导入该包。使用"import"语句可以完成此功能
import package[.package2...].(classname|);
如: import org.gdpi.di.UserService;
导入所有包可以使用“”,这里的 * 表示通配符。
如:import org.gdpi.di.*;意思是导入org.gdpi.di下使用的包,文件。
javaDoc
javadoc命名是用来生成自己API文档的
根据文档注释生成帮助文档(API文档)
参数信息
@author 作者名
@version 版本号
@since 指明需要最早使用到的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
package org.gdpi.basics.doc;
/**
* @author zibishaonian
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
找到上面已经写好的文档注释到的java文件,并进入当前文件所在的地址的Dos命令窗口
输入命令:
javadoc 文件名.java
表示:java生成API文档
javadoc -encoding UTF-8 -charset UTF-8 文件名.java
表示:如果含有中文,则需要设置编码 和字符集 的格式(为解决乱码)。
会生成许多文件,其中index.html就是所需的网页版帮助文档。

浙公网安备 33010602011771号