java基础阶段之二

4、变量、常量

变量

什么是变量:内存中的一个存储区域,该区域要有自己的数据类型、变量名,该区域的数据可以在同一数据类型的范围内可以不断变化数值;

定义变量作用:用来不断存放同一类型的数据,并且可以重复使用。

java是一种强类型语言,每个变量都必须声明其类型,java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

格式:

//数据类型  变量名 = 初始化值; 可以使用逗号隔开来声明多个同类型变量
//type varName = value {,varName = value}
    int i = 10;
    int i1 = 100,i2 = 200;  //为了程序可读性尽量不使用此声明
    
    String name = "张三";
    char x = 'X';
    double pi = 3.1415;

  

可以通过变量名访问指向的内存区域中存储的值。
注意事项:

  1. java是强类型必须先声明后使用

  2. 每个变量都有类型,类型可以是基本类型,也可以是引用类型

  3. 需要进行初始化后才能使用变量

  4. 变量名必须是合法的标识符

  5. 变量声明是一条完整的语句,所以必须以分号“;”结束

变量作用域

public class Test {
    
static int allClicks = 0 ;      //类变量
​
    String str;                 //实例变量
    
    public void method(){
        int i = 0 ;             //局部变量
        
        str = "hello";
        
        allClicks = 2500;  
    } 
}

  

  1. 类变量

    类变量 又称静态变量,作用范围在类中的所有方法,但是其他类是使用不了的。

  2. 实例变量

    作用范围在类中的所有方法,但是其他类是使用不了的。如果不初始化值,系统会给默认初始化值,其中如果是基本数值类型,则系统会默认赋值为“0”、Boolean类型默认赋值为“false”、引用类型会默认赋值为“null”。

  3. 局部变量

    局部变量 又称内部变量,必须声明和初始化值,作用范围仅限在某个方法的{}中使用,其他方法使用不了。

常量

初始化后不再改变的值,不会变动的值,固定的值。

//final 数据类型 常量名 = 值;
final double PI = 3.14;

所谓常量可以是一种特殊的变量,一旦赋予值后,在程序的运行中不运行再被改变。常量以final修饰符修饰,final 表示“最终的”。常量名一般是大写字符形式。

变量的命名规范:

  1. 所有变量、方法、类名:见名知意

  2. 类成员变量:首字母小写和驼峰原则:monthSalary

  3. 局部变量:首字母小写和驼峰原则

  4. 常量:大写字母和下划线:MAX_VALUE

  5. 类名:首字母大写和驼峰原则:Max,MaxNum

  6. 方法名:首字母小写和驼峰原则

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 级最低, 同级从左向右(高到低)。

  1. ()    []

  2. !     +(正)    -(负)     ++  ,   --

  3.     *     /      %

  4. +(加)     -(减)

  5. <<   >>   >>>

  6. <   <=     >   >=   instanceof

  7. ==  !=

  8. &

  9. ^

  10. |

  11. &&

  12. ||

  13. ?  :

  14. =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>=

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就是所需的网页版帮助文档。

posted @ 2020-05-14 10:33  陌mo  阅读(182)  评论(0)    收藏  举报