Java基础学习笔记 —狂神说

1 注释

  • 平时我们写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。

  • 注释并不会被执行,是给我们写代码的人看的

  • 书写注释是一个非常好的习惯 BAT

  • 平时写代码一定要注意规范

  • Java中的注释有三种:

    • 单行注释
    • 多行注释
    • 文档注释

1.1 标识符

  • 关键字
abstract assert boolean break bye
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new packaga private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
  • Java 所有的组成部分都需要名字、类名、变量名以及方法名都被称为标识符

  • 标识符注意

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)或数字的任何字符组合

  • 不能使用关键字作为变量名或方法名

  • 标识符是大小写敏感

  • 合法标识符举例:age、$salary、Value、_ 1_value

  • 非法标识符举例:123abc、-salary、#abc

  • 可以使用中文命名,但是一般不建议这样使用,也不建议使用拼音


2 数据类型

2.1强类型语言

​ 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

特点

​ 安全性高 速度慢

2.2 弱类型语言

python、VB、JS

2.3 Java的数据类型的两大类

基本类型(primitive type)

​ 引用类型(reference type)

public class Demo01 {
    public static void main(String[] args) {
        //八大基本数据类型
        int num1 = 10;//最常用
        byte mum2 = 30;
        short num3 = 30;
        long num4 = 30L;//long类型要在数字后面加个L

        //小数:浮点数
        float num5 = 50.1F;//float类型要在数字后面加个F
        double num6 = 3.1415926535897932;

        //字符
        char name = 'A';
        //字符串,String不是关键字,是类
        //String namea = "迈阿密"

        //布尔值:是非
        boolean flag = true;
        //boolean flag = false
    }


}

2.4 字节

位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。

字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示。

1B(bety,字节) = 8 bit(位)

字符:是指计算机中使用的字母、数字、字和符号

1bit表示1位,

1Byte表示一个字节 18= 8b。

102B=1KB

1024KB=1M

1024M=1G.

2.5 数据类型扩展

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

public class Demo02 {
    public static void main(String[] args) {
        //整数拓展:   进制  二进制0b   十进制  八进制0  十六进制0x

        int i = 10;
        int i2 = 010;//八进制
        int i3 = 0x10;//十六进制0x  0~9  A~F 16

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("//==================================================");
        //==================================================
        //浮点数扩展?  银行业务表示?钱
        //BigDecimol  数学工具类
        //==================================================
        //float  有限  离散  舍入误差  大约  接近但不等于
        //double
        //最好避免完全使用浮点数进行比较
        //最好避免完全使用浮点数进行比较
        //最好避免完全使用浮点数进行比较

        float f =0.1f; //0.1
        double d = 1.0/10;//0.1

        System.out.println(f==d);//false

        float d1 = 45534534f;
        float d2 = d1+1;

        System.out.println(d1==d2);//true


        //===========================================================
        //字符扩展?
        //===========================================================
        char  c1 = 'a';
        char  c2 = '中';

        System.out.println(c1);

        System.out.println((int)c1);

        System.out.println(c2);

        System.out.println((int)c2);

        //所有的字符本质还是数字
        //编码  Unicode 表:(97 = a 20013=中) 2字节  0-65536   Excel  2的16次方 = 65536

        //U0000  UFFFF

        char  c3 ='\u0061';

        System.out.println(c3);//a

        //转义字符
        //  \t  制表符
        //  \n  换行
        //  ...

        System.out.println("Hello\nWorld");


        //
        String sa = new String("hello world");
        String sb = new String("hello world" );
        System.out.println(sa==sb);


        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc==sd);
        //对象  从内存分析

        //布尔值扩展
        boolean flag = true;
        if (flag==true){}//新手
        if (flag){}//老手
        //Less is More!  代码要精简易读
    }
}

3 类型转换

  • 由于Java是强类型语言,所以要进行有些运算时时候的,需要用到类型转换。

低----------------------------------------------------->高

byte,short,char---> int---> long ---> float --->double

  • 运算中,不同类型的数据先转化为同一类型,然后进行运算。

  • 强类型转换

  • 自动类型转换

public class Demo03 {
    public static void main(String[] args) {
        int i = 128;
        byte b =(byte)i;//内存溢出

        //强制转换  (类型)变量名 低--高
        //自动转换      低--高

        System.out.println(i);//128
        System.out.println(b);//-128

        /*
        注意点:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.在把高容量转换到低容量的时候,强制转换
        4.转换的时候可能存在内存溢出,或者精度问题!
         */
        System.out.println("============================");
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89f);//-45

        System.out.println("============================");
        char c = 'a';
        int d = c+1;
        System.out.println(d);//98
        System.out.println((char) d);//b
    }
}

public class Demo04 {
    public static void main(String[] args) {
        //操作比较大的数的时候 , 注意溢出问题
        //JDK7新特性 , 数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;//-1474836480 , 计算的时候溢出了
        long total2 = money*years;//默认是int , 转换之前已经存在问题了?

        long total3 = money*((long)years);//先把一个数转换为long
        System.out.println(total3);//20000000000
	//L  L
    }
}

4 变量、常量

4.1 变量

  • 变量是什么:就是可以变化的量!
  • Java是一种强类型语言,每个变量都可以声明其类型。
  • Java变量是程序中最基本的储存单元,其要素包括变量名,变量类型和作用域

type varName [value] [{,varName[=value]}]:

//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
  • 变量名必须是合法的标识符。
  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class Demo07{
    pulcic static void main(String[] args {
        //int a,b,c
        //int a=1 , b=2 , c=3
        String name = "Chris Heria";
        char x = 'x';
        double pi = 3.1415926;
    }
}

4.2 变量作用域

  • 类变量

  • 实例变量

  • 局部变量

    public class Demo05 {
        //类变量 staic
        static double salary = 2500;
    
        //属性:变量
    
        //实例变量:从属于对象;如果不自行初始化,这个类型的默认值  0  0.0
        //布尔型:默认值是false
        //除了基本类型,其余的默认值都是null
        String name;
        int age;
    
        //main方法
        public static void main(String[] args) {
    
            //局部变量:必须声明和初始化值
            int i = 10;
            System.out.println(i);
    
            //变量类型  变量名字 = new Demo05();
            Demo05 demo05 = new Demo05();
            System.out.println(demo05.age);
            System.out.println(demo05.name);
    
            //类变量 static
            System.out.println(salary);
        }
        
        //其他方法
        public void add(){
    
        }
    }
    

4.3 常量

  • 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。

  • 所谓常量可以理解成一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变。

final 常量名=值

final double PI=3.14;

  • 常量名一般使用大写字符。
public class Demo06 {
    //修饰符,不存在先后顺序
    static final double PI = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);
    }
}

4.4 变量命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary除了第一个单词意外,后面的首字母大写 lastname lastName
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

5 运算符

5.1 Java 语言运算符:优先级()

  • 算数运算符:+,-,*,/,%(模),++/--
  • 赋值运算符=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符&&(与),||(或),!(非)
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符:?:
  • 拓展赋值运算符:+=,-+,*=,/=

示例01:

package operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //Ctrl + D :复制到当前下一行
        int a = 10;
        int b = 20;
        int c = 20;
        int d = 20;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);




    }
}

运行结果:

示例02

package operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 1231231213121313L;
        int b = 123;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int
	//无long类型时,非int类型转为int类型
    }
}

运行结果:

示例03

package operator;

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:  正确 ,错误     布尔值
        //if

        int a = 10;
        int b = 20;
        int c = 21;

        //取余,模运算
        System.out.println(c%a);//c/a  21/10 = 2...1

        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
    }
}

运行结果:

5.2 自增自减

package operator;

public class Demo04 {
    public static void main(String[] args) {
        //++  --  自增 ,自减  一元运算符
        int a =3 ;

        int b = a++; //执行完这行代码后,先给b赋值,再自增
        //a++ a=a+1
        System.out.println(a);
        //a++  a=a+1;
        int c = ++a;//执行完这行代码前,先自增,再给b赋值

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //幂运算 2^3  2*2*2 = 8  很多运算,我们会使用一些工具类来操作!
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
}

运算结果

5.3 逻辑运算符

package operator;

public class Demo05 {
    public static void main(String[] args) {
        //与(and)   或(or)   非(取反)
        boolean a =true;
        boolean b =false;

        System.out.println("a && b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为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);
        System.out.println(d);
        System.out.println(c);
    }
}


执行结果

5.4 位运算

package operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
       ------------------------
        A&B = 0000 1100
        A|B = 0011 1101
        A^B = 0011 0001
        ~B = 1111 0010

        2*8 = 16   2*2*2*2
        效率最高!!!
        <<   *2
        >>   /2

        0000  0000    0
        0000  0001    1
        0000  0010    2
        0000  0011    3
        0000  0100    4
        0000  1000    8
        0001  0000    16
         */
        System.out.println(2<<3);
    }
}

2<<3

16

5.5 条件运算符

package operator;

public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        
        a+=b;//a = a+b
        a-=b;//a = a-b

        System.out.println(a);
        
        //字符串连接符  + ,string
        System.out.println(""+a+b);
        System.out.println(a+b+"");
    }
}

5.6 三元运算符

package operator;

public class Demo8 {
    public static void main(String[] args) {
        //x ? y :z
        //如果==true,则结果为y,否则结果为z
        
        int score = 80;//必须掌握
        String type = score <60 ?"不及格":"及格";
        //if 
        System.out.println(type);
        
    }
}

6 包机制

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间

  • 包语句的语法格式为:

  • package pkg1[. pkg2 [.pkg3...]]

  • 一般利用公司域名倒置作为包名

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包.使用“import”语句可完成此功能

  • import package1[.package2...].(classname|*);

7 Java Doc

  • javadoc命令是用来声声自己ApI文档的

  • 参考信息

    • @author作者名
    • @version版本号
    • @since 指明需要最早使用的jdk版本
    • @param参数名
    • return返回值情况
    • @throws异常抛出情况
posted @ 2021-05-06 01:20  Chris·Heria  阅读(253)  评论(0)    收藏  举报