疯狂Java基础Day1

——每过一遍基础,都是一次提升!

太多遗忘了,慢慢补。。。

推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕)

推荐原因:讲的不错,会涉及到底层,也会讲讲面试。

一、注释

主要掌握单行注释多行注释JavaDoc文档注释

谨记在心的两句话:

  • 书写注释是一个好习惯
  • 写代码必须注意规范
/**
 * @author 我在吃大西瓜呢
 * (JavaDoc文档注释)
 */
public class HelloWorld {
    public static void main(String[] args) {
        // 输出一个hello world (单行注释)
        /* 输出一个hello world (多行注释)*/
        System.out.println("Hello World!");
    }
}

二、标识符和关键字

类名变量名方法名都被称为标识符

注意点:

  • 所有标识符必须以字母、美元符$、下划线_ 开始,首字符后随意,但为了规范,建议用好English
  • 不能使用关键字作为变量名或方法名
  • 标识符大小写敏感

关键字:(不认识不要紧,慢慢积累)

image.png

三、数据类型

Java是强类型语言,要求变量的使用要符合规定,所有变量必须先定义,后使用

因此,安全性高,但速率较低。鱼与熊掌不可兼得焉!

image.png

首先了解什么是字节?

  • 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数
  • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B表示
  • 1 byte = 8 bit
  • 字符:计算机中使用的字母、数字、字和符号

一些转换关系:

  • 1 B = 8 b
  • 1024 B = 1 KB
  • 1024 KB = 1 M
  • 1024 M = 1 G
  • 1024 G = 1 TB

八大基本数据类型:

public class Demo1 {
    public static void main(String[] args) {
        //八大基本数据类型
        //整数
        byte num1 = 10;
        short num2 = 500;
        int num3 = 6666; //常用
        long num4 = 999999999L; //long类型一般在数字后面加L
        //小数
        float num5 = 9.6F; //float类型一般在数字后面加F
        double num6 = 66.99;
        //字符
        char name  = 'W';
        //字符串(引用类型)
        //String id = "我在吃大西瓜呢";
        //布尔值
        boolean flag1 = true;
        boolean flag2 = false;
    }
}

相关拓展:

public class Demo2 {
    public static void main(String[] args) {
        //整数拓展:        进制       二级制0b     十进制     八进制0     十六进制0x
        int i = 10;
        int i2 = 010;
        int i3 = 0x10;
        System.out.println(i); //10
        System.out.println(i2); //8
        System.out.println(i3); //16
        System.out.println("===============================================");
        //=================================================================
        //浮点数拓展: 问--->有关银行业务怎么表示?
        //           答--->BigDecimal数学工具类
        //因为float是有舍入误差
        //example1:
        float f = 0.1f; //0.1
        double d = 1.0/10; //0.1
        System.out.println(f==d); //false
        //example2:
        float d1 = 12345678998765f;
        float d2 = d1+1;
        System.out.println(d1==d2); //true
        System.out.println("===============================================");
        //=================================================================
        //字符拓展 强制转换
        //所有的字符本质还是数字 参考Unicode编码表
        char c1 = 'a';
        char c2 = '我';
        System.out.println(c1);
        System.out.println((int)c1); //97
        System.out.println(c2);
        System.out.println((int)c2); //25105
        char c3 = 'u0061';
        System.out.println(c3); //a
        //转义字符 (百度一下!)
        // 	 制表符
        // 
 换行
        System.out.println("===============================================");
        //=================================================================
        //布尔值拓展
        boolean flag = true;
        //以下表示方法一样 less is more!
        //if(flag==true){}
        //if (flag){}
    }
}

四、类型转换

Java是强类型语言,故有些运算时需要用到类型转换

image.png

public class Demo3 {
    public static void main(String[] args) {
        int i = 128;
        //强制转换 (类型)变量名 高->低
        byte b = (byte)i;
        //自动转换 低->高
        double d = i;
        
        System.out.println(i); //128
        System.out.println(b); //-128 内存溢出
        System.out.println(d); //128.0
        /*
        注意:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.高--->低 强制转换
        4.转换时可能存在溢出问题或者精度问题
         */
    }
}

关于溢出问题:操作比较大的数时,要注意溢出问题

public class Demo4 {
    public static void main(String[] args) {
        int money = 10_0000_0000; //JDK7的新特性
        int years= 30;
        int sum1 = money*years; //-64771072溢出
        long sum2 = money*years; //-64771072,默认是int,转换之前已存在问题
        long sum3 = money*(long)years; //30000000000
    }
}

五、变量、常量、作用域

1、变量

注意事项:

  • 每个变量都有类型
  • 变量名必须为合法的标识符

2、常量

常量(constant):初始化后不能再改变值!

常量名一般用大写字母

final double PI = 3.14;

3、变量作用域

public class Demo5 {
    //类变量 static
    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); //10

        //变量类型 变量名
        Demo5 demo5 = new Demo5();
        System.out.println(demo5.age); //0
        System.out.println(demo5.name); //null

        //类变量 static
        System.out.println(salary); //2500

        demo5.method(); //100
    }

    //其他方法:
    public void method(){
        int i = 100; //局部变量
        System.out.println(i);
    }
}

一些命名规范:重要指数五颗星★★★★★

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则(monthSalary)
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线(MAX_VALUE)
  • 类名:首字母大写和驼峰原则(Boy、GoodBoy)
  • 方法名:首字母小写和驼峰原则(run()、toRun())

六、基本运算符

image.png

1、算术运算符

public class Demo6 {
    public static void main(String[] args) {
        //二元运算符
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;

        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(a%b); //10
    }
}

值得理解指数五颗星★★★★★

public class Demo8 {
    public static void main(String[] args) {
        //一元运算符
        int a = 3;
        int b = a++; //先给b赋值,再自增
        //a++   a = a+1
        System.out.println(a); //4
        //++a   a = a+1
        int c = ++a; //先自增,再给c赋值
        System.out.println(a); //5
        System.out.println(b); //3
        System.out.println(c); //5
    }
}

2、关系运算符

public class Demo8 {
    public static void main(String[] args) {
        //关系运算符返回结果: true or 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
    }
}

3、逻辑运算符

public class Demo9 {
    public static void main(String[] args) {
        //逻辑运算符
        //与 and         或 or            非(取反)
        boolean a = false;
        boolean b = true;

        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<4必然错了,故短路
        System.out.println(d);
        System.out.println(c); //5,因为不实现自增
    }
}

4、位运算符

public class Demo10 {
    public static void main(String[] args) {
        /*
        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
        ~B :1111 0010 与B完全相反

        问: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);
    }
}

5、条件(三元)运算符

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

6、扩展运算符

public class Demo12 {
    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); //10
        //------------------------------------------------------
        System.out.println("----------------------------------");
        //字符串连接符 + 
        System.out.println(""+a+b); //1020
        System.out.println(a+b+""); //30
    }
}

七、包机制

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

如:www.baidu.com

package com.baidu

Java中导入包机制:import (IDEA现在一般会自动导入)

八、JavaDoc生成文档

JavaDoc命令是用来生成自己API文档的

  • @author 作者名
  • @version 版本号
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况
原文地址:https://www.cnblogs.com/wangzheming35/p/14337189.html