【狂神说Java】学习笔记8:Java基础语法

【狂神说Java】学习笔记8:Java基础语法
[01] 注释,标识符,关键字

[02] 数据类型

[03] 类型转换

[04] 变量,常量

[05] 运算符

[06] 包机制,JavaDoc

[01] 注释,标识符,关键字
注释
注释是属于备注内容的东西,不会被程序执行。

写备注的好处是方便自己回忆和让其他人理解自己的代码。

	//	注释方法1:单行备注。
	
	/*
		注释方法2:多行备注。
	*/
	
	/**	注释方法3:文档注释,每行一个星号,写的文档信息会被识别的。
     * @Description HelloWorld
     * @Author Alvin.Wang
     */

改变注释的格式和颜色做法
image

标识符和关键字
Java代码里高亮的文字就是关键字,具有特殊含义。变量命名的时候避免使用这些词,

Java的关键字基本上就是下面这些了。

标识符的注意点

Java对大小写十分敏感,变量Man和变量man不是同一个东西。

命名的话尽量用英文而非中文,比如用 name 就不要用 mingzi 。

[02] 数据类型
强类型语言:强类型定义语言。它要求变量使用要 严格 符合规范,所有变量必须定义后才能生效。比如Java,C语言,C++等。安全性高反而运行速度会慢。

弱类型语言:相比于强类型语言,vb或者JavaScript的代码要求就没有那么严格。

数据类型
数据类型包括:数值类型和引用类型。

​ 数值类型:整数类型,浮点类型,字符类型,布尔类型。

​ 引用类型:类,接口,数组。

		/*  八大数值类型  */
        //  整数
        int num1 = 10;      //最常用的
        byte num2 = 20;
        short num3 = 30;
        long num4 = 30L;    //long类型一般在数字后面加上L,声明是long类型

        //  浮点类型。小数
        float num5 = 50.1F; //float类型要在末尾加F
        double num6 = 3.141592653;

        //  字符
        char name = 'A';
        //  字符串,字符的组合拼接。
        String namea = "China";

        //  布尔值,只有true和false两个值。
        boolean flag_yes = true;
        boolean flag_no = false;

字节

拓展事例(含面试题)

整数拓展事例

        //  整数拓展:进制写法。二进制0b,八进制0,十进制,十六进制0x,
        int i = 10;
        int i1 = 010;   // 八进制0
        int i2 = 0x10;  // 十六进制0x  由0-9和A-F组成

        System.out.println("10进制i=" + i );      //  10进制i=10
        System.out.println("8进制i1=" + i1 );     //  8进制i1=8
        System.out.println("16进制i2=" + i2 );    //  16进制i2=16

浮点拓展事例
事例1:float f=0.1f ,double d=1.0/10,但是两个数竟然不相等。明明得到的值都为0.1…

事例2:float d1=231212312314235125f, float d2=d1+1,但是两个数竟然相等。

float 是有限的,离散的,舍入误差。无法完全等于,只会无限接近。

避免用浮点数进行比较!!!

因此银行系统会使用 BigDecimal (Java的大数类型,数学工具类型的)

字符拓展事例
所有的字符本质还是数字。文字是从数字编码而来,使用Unicode来编码的。

布尔值拓展

    boolean flag = trueif(flag == true){}  //新手写法,重新强调flag
    if(flag){}          //老手写法,无需再次强调flag的真假。
    //Less is More 代码要精简易读

[03] 类型转换

事例1
强制转换:由高到低时发生溢值。类似于2L的桶水倒到矿泉水瓶里。

转换时的注意点:1.布尔值不能转换;2.不可转换为不相干类型;3.高容量转到低容量;4.强制转换时注意内存溢出,或精度问题。

事例2

[04] 变量,常量
变量

        // 变量赋值
        // int a=1,b=2,c=3;  程序可读性差,开发时不要这样写
        int a =1;
        int b =2;
        String name = "wang";
        char x = 'X';
        double pi = 3.14;

变量作用域
类变量:全局可用,必须在前面加上static关键字。

实例变量:从属于整个对象/类,作用域更大。可以不用初始化,且有默认值。

​ 默认值是0(整数型),0.0(浮点型),false(布尔类型),null(字符型)

局部变量:写在方法里面,作用于这个方法内部。且必须声明和初始化赋值。

public class Demo08 {
    // 变量

    // ●1● 类变量 static必须加起来
    // 这样就不用像 实例变量一样还需要再new了。
    static double salary = 2500;

    // ●2● 实例变量:从属于对象。用的话调用 Demo08.name即可。
    String name;
    int age;

    // main方法
    public static void main(String[] args) {

        // ●3● 局部变量:必须声明和初始化赋值。
        int i = 10;
        System.out.println(i);
		
        // 实例变量的调用。
        // 变量类型  变量名称 = new Deme08(); 自引用类型。
        //小技巧:输入new Demo08()之后摁住Alt + Enter即可自动形成下一行声明。
        Demo08 demo08 = new Demo08();
        System.out.println(demo08.name);
        System.out.println(demo08.age);

        //类变量 static 可以直接调用并输出结果。
        System.out.println(salary);

    }

    // 其他方法
    public void add(){
        
    }
}

常量
不会变动的值。从一而终是一个值。用final定义。一般名称是大写的。

[05] 运算符
运算符

算数运算符:二元运算

  		// 二元运算符
        // 小技巧:Ctrl + D 复制当前行到下一行。
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
		// 10/20 结果0.5但显示为0,此时给a或b转类型为double即可
        System.out.println((double)a/b);    
		// % :取模运算。余数为1
        System.out.println(21%20); 	// 1

浮点的二元运算
浮点的计算结果默认是int类型,如果有long类型则默认是long类型。

        //  浮点的二元运算
        //  结论:计算结果默认是int类型,如果有long类型则默认是long类型。
        long a = 1231311L;
        int b = 123;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);    //long类型: 1231452
        System.out.println(b+c+d);      //int类型:141
        System.out.println(c+d);        //int类型:18
        System.out.println((double)c+d);//强转类型double后为18.0

boolean关系运算符

        //  boolean值的 关系运算符返回的结果
        int a = 10;
        int b = 20;
        int c = 21;

        System.out.println(a>b);	//false
        System.out.println(a<b);	//true
        System.out.println(a==b);	//false
        System.out.println(a!=b);	//true

自增自减运算符,也叫一元运算符。

        // ++ 和 -- 自增自减运算符。
        // b=a++;  实际就是 b=a,a=a+1; 的步骤。
        // c=++a;  实际就是 a=a+1,c=a; 的步骤。
        // 区别:a++ (先把a的值交出去,再完成自增) ;++a (先自增,再把结果交出去。)
        int a =3;
        int b =a++; // 解释:此时a先把值给b,b=3,然后a自增,a=4。
        System.out.println(a);  // a=4
        System.out.println(b);  // b=3
        int c =++a; // 解释:此时a先自增a=5,然后把值给c,c=5。
        System.out.println(a);  // a=5
        System.out.println(c);  // c=5

		//  幂运算  2~3=2*2*2=8
        //  快捷输入:Math.pow(2, 3) 然后Alt+Enter即可。
        double pow = Math.pow(2, 3);
        System.out.println(pow);    //8.0

逻辑运算与短路运算

        // 逻辑运算符
        // 与(a&&b)运算:两个都真则真,一真一则全假,两全假则假。
        // 或(a||b)运算:两个都真则真,一真一则也真,两全假则假。
        // 非运算:结果的反值。
        boolean a = true;
        boolean b = false;

        System.out.println("逻辑与运算 a&&b: " + (a && b));          //false
        System.out.println("逻辑或运算 a||b: " + (a || b));          //true
        System.out.println("逻辑非运算 !(a&&b): " + (!(a && b)));    //true


        // 短路运算
        // 在进行与运算的时候,&&前面出错的话就不计算符号后面的了。
        int c=5;
        boolean d=(c<4)&&(c++<4);   //&&左的计算式错误,因此不进行右边的计算。c还是5
        System.out.println(d);      //false
        System.out.println(c);      //5

        boolean e=(c>4)&&(c++<4);   //&&左的计算式对,右边c++之后是6,小于4,e错。
        System.out.println(e);      //false
        System.out.println(c);      //6 进行了c++的计算,因此c增长了。

位运算符

		/*  位运算符,基本上是涉及计算机用的计算问题
        A = 0011 1100
        B = 0000 1101
        ----------  位运算  ----------
        A&B = 0000 1100     与位:都为1才是1
        A|B = 0011 1101     或位:只要有个1则为1
        A^B = 0011 0001     取反:相同则0,否则为1
        ~B  = 1111 0010     反B。
         */

       /*   位运算实例 :快速计算2*8 即2*2*2*2
            0000 0000   0
            0000 0001   1
            0000 0010   2   1左移1位,1*2
            0000 0011   3
            0000 0100   4   1左移2位,1*2*2
            0000 1000   8   1左移3位,1*2*2*2
            0001 0000  16   1左移4位,1*2*2*2*2
         因此左移 <<  是 *2
            右移 >>  是 /2
        */
        System.out.println(2<<3);       //16    2*(2*2*2)
        System.out.println(16>>3);      //2     16/2/2/2

拓展逻辑运算符及字符串拼接

        //  拓展逻辑运算符
        int a = 10;
        int b = 20;

        a += b;     //a = a+b =30
        a -= b;     //a = a-b =-10
        System.out.println(a);

        //  字符串连接符  + , String
        System.out.println(a+b+"");     //30    先计算了a+b再拼接
        System.out.println(""+a+b);     //1020  识别了字符串符号,于是进行数字拼接1020

三元运算:条件运算符

        /*  三元运算符:条件运算符
           X ? Y :Z     若X为true,则结果为Y,否则结果为Z
         */
        int score = 55;
        String type = score < 60?"不及格":"及格";
        System.out.println(type); //不及格

[06] 包机制,JavaDoc
包机制
包的本质就是文件夹。防止命名空间重复。

一般公司域名倒叙作为包名。

定义包叫package,引入包叫import。

JavaDoc
百度搜索 JDK帮助文档 即可。此链接https://www.matools.com/api/java8

package operator;
    //  类的注释
/**
 * @author Alvin.Wang 作者
 * @version 1.0 版本
 * @since 1.8 需要最早使用的jdk版本
 *
 */

public class Doc {
    String name;
    //  方法的注释,下面代码及类注解写好之后,输入/**回车自动生成方法注解。
    /**
     *
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;

    }

}

JavaDoc的作用
JavaDoc的注解和普通注释有什么区别?

首先找到代码所在文件夹。

然后找到文件夹,在前面输入 cmd 以及 空格 ,接着进入Dos界面,并输入javadoc -encoding UTF-8 -charset UTF-8 Doc.java

通过这行指令,把Doc文档的文字编码以UTF-8输出,更适应于中文环境。

此时发现原文件夹生成很多文件,其中点击index.html (index首页)你会打开一个很像官方文档的东西,里面就是你Doc.java的文档版本,把Doc.java的参数信息也都写进去了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值