JavaSE入门知识总结(学习狂神day01)

预科:基本的Dos命令

打开CMD方式:

  1. win键+R,输入cmd打开命令提示符
  2. 开始->window系统->命令提示符
  3. 在任意的文件夹下,按住shift+鼠标右键打开Powershell窗口
  4. 资源管理器的地址栏前面加上cmd
  5. 最高权限,以管理员运行

常用的Dos命令:

#盘符切换
#查看当前目录下的所有文件dir
#切换目录cd change directory
#返回上一级cd..
#清理屏幕cls
#退出终端exit
#查看电脑ip   ipconfig
#打开应用:打开计算机(calc)、打开画图工具(mspaint)、打开记事本(notepad)
#ping命令 	#ping www.baidu.com
#文件操作
	#创建文件夹命令 md 目录名
    #新建文档	   cd 目录名 
    #删除文件命令  del 文件名
    #移除文件      rd 目录名

Java入门

问题:C&C++----->指针与内存管理

Java(跨平台)的三大版本:

  1. javase标准版(桌面程序、控制台开发)
  2. javame嵌入式开发(手机、家电)
  3. javaee企业级开发(web端、服务器开发)

JDK-->JRE-->JVM(跨平台)

JDK卸载:

  1. 删除java的安装目录
  2. 删除JAVA_HOME
  3. 删除path中java的目录
  4. java -version

JDK安装:

  1. 配置环境变量
  2. 变量-->JAVA_HOME
  3. 配置path变量
  4. 测试是否成功安装java -version

第一个程序:HelloWorld

public class HelloWorld{
	public static void main(String[] args){
		System.out.println("hello,world!");
	}
}
  • 编译javac java文件,会生成一个class文件

  • 运行class文件,
    JavaSE入门知识总结(学习狂神day01)


可能遇到的情况:

	1. 每个单词的大小不能出现问题
	2. 文件名和类名必须保证一致
	3. 尽量使用英文
	4. 使用了中文符号

java程序运行机制

  • 编译型:把一本书直接翻译(操作系统、c/c++)---->编译器
  • 解释型:说一句话解释一句话(网页,服务器脚本、java、python)
  • 程序运行机制:java源程序( * .java)---->java编译器----->字节码(*.class)----->类装载器----->字节码校验----->解释器----->操作系统平台

使用IDEA开发:集成开发环境idea安装


java基础语法

1.注释、标识符、关键字

注释:单行、多行、文档注释(javaDoc)。

关键字:
JavaSE入门知识总结(学习狂神day01)

标识符:java的所有组成部分都需要名字。类名、方法名、变量名都是标识符。

注意:标识符都以字母A-Z(a-z)、美元符$、或者下划线_开头。

​ 首字母之后可以是任意字符组合

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

​ 标识符是大小写敏感的


2.数据类型:

(java是强类型语言)--->要求变量的使用要严格符合规定,所有的变量都必须先定义后才能使用。------>安全

(弱类型语言):vb、js


Java的数据类型分为 :

  • 基本类型:数值类型(整数类型、浮点类型、字符类型)和布尔类型。

    ​ 整数类型:byte占1个字节范围:-128-127

    ​ short占2个字节范围:-32768-32767

    ​ int占4个字节范围:-2147483648-2147483647

    ​ long占8个字节范围:-9223372036854775808-9223372036854775807

    ​ 浮点类型:float占4个字节

    ​ double占8个字节

    ​ 字符类型:char占2个字节

       boolean类型:占1位其值只有true和flase两个。
    
  • 引用类型:类、接口、数组

    ​ 8bit(位)=1B(byte字节)


常见的问题:

(1)整数扩展

//整数扩展:  进制     二进制0b   十进制     八进制0    十六进制0x
        int i = 10;
        int i2 = 010;
        int i3 = 0x10;

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("=============================");

(2)浮点数扩展(最好完全避免使用浮点数进行比较)

//==================================================
    //浮点数扩展?    银行业务怎么表示? 钱
    //BigDecimal    数学工具类
    //==================================================

    //float 有限字长  离散    舍入误差  大约    接近单不等于
    //double
    //最好完全避免使用浮点数进行比较!!!
    float f = 0.1f; //0.1
    double d = 1.0 / 10; //0.1

    System.out.println(f == d);  //应为true,运行结果是false
    float d1 = 231313113131131313131f;
    float d2 = d1 + 1;
    System.out.println(d1 == d2);  //应为false,运行结果是true

(3)字符扩展(Unicode编码表)

//字符扩展
    System.out.println("==================================");
    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,65 = A)    2字节     0-65536     Excel  2^16=65536
    //U00000    UFFFF

    char c3 = '\u0061';
    System.out.println(c3); //a

(4)转义字符

    //转义字
    // \t   制表符
    // \n   换行
    System.out.println("Hello\tWorld");

(5)字符串(遗留问题

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

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

(6)布尔值(多用于if语句)

        //布尔值扩展
        boolean flag = true;
        //都是判断flag是否为真
        if (flag==true){} //新手
        if (flag){}  //老手
        //Less is More!     精简易读

3.类型转换

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

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

  • 运算中不同的数据类型先转化为相同的数据类型,在进行计算
  • 高--->低(强制类型转换)、低--->高(自动类型转换)

注意点

  • 不能对布尔值进行转换
  • 不能把对象类型转换为不相干的类型
  • 在把高容量转换到低容量的时候,强制转换
  • 转换的时候可能存在内存溢出,或者精度问题!
  • 操作比较大的时候注意溢出问题
public class Demo04 {
    public static void main(String[] args) {
        //操作比较大的时候,注意溢出问题
        //jdk7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int year = 20;
        int total = money*year;
        System.out.println(total);  //-1474836480,计算的时候溢出了
        long total2 = money*year;   //默认是int,转换之前已经存在问题了?

        long total3 = money*(long)year; //把一个数转换为long
        System.out.println(total3);

        long total4 = (long)(money*year);//-1474836480,计算完再转换还是溢出,要在计算之前转换
        System.out.println(total4);
    }
}

4.变量、常量

java是一种强类型语言,每个变量都必须声明其类型。

java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,和作用域

注意:

  • (1)每个变量都有类型,可以是基本类型,也可以是引用类型

  • (2)变量名必须是合法的标识符

  • (3)变量声明是一条完整的语句,一次每个声明都必须以分号结束

  • (4)不建议一行定义多个变量。

public class Demo05 {
    public static void main(String[] args) {
        //int a=1, b=2, c=3;
        int a = 1;
        String name = "wang";
        char x = 'x';
        double pi = 3.14;
    }
}

变量作用域:

  • 类变量:在类中static int 变量名=值

  • 实例变量:在类中String str = "hello world"

  • 局部变量:在方法中

常量:

  • 初始化后不能再改变值!不会变动的值。
  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。final 常量名=值;
  • 常量名一般使用大写字符。

变量的命名规范:

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

5.运算符 : 优先级()

  • 算数运算符:+,-,*,/,%,++,--
  • 赋值运算符=
  • 关系运算符:>,<,>=,<=,==,!= instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&, |, ^, ~, >>, <<, >>>(了解!!!)
  • 条件运算符?:
  • 扩展赋值运算符:+=, -=, *=, /=
package operator;

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

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

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        
        //幂运算
        double pow = Math.pow(3, 2);
        System.out.println(pow);
    }
}

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        异或:相同为0,不同为1
        ~B = 1111 0010         取反

        2*8怎么运算最快?
        效率极高!!!
        <<左移(*2)
        >>右移(/2)

        0000 0000         0
        0000 0001         1
        0000 0010         2
        0000 0011         3
        0000 0100         4
        0000 1000         8
        0001 0000         16
        会发现2、4、8、16左移一位
        */
        System.out.println(2<<3);
    }
}

package operator;

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

        System.out.println("a&&b:"+(a&&b)); //逻辑与运算:两个变量都为真,结果采薇true
        System.out.println("a||b:"+(a||b)); //逻辑或运算:有true则true
        System.out.println("!(a&&b):"+!(a&&b)); //取反

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);  //短路与,若前部分为false则后面代码不执行,直接为false
        System.out.println(d);
        System.out.println(c);
    }
}
package operator;

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

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

        //字符串连接符 +
        System.out.println("" + a + b);  //只要String出现在运算前,后面会进行拼接,转换为String进行连接
        System.out.println(a + b + "");  //String 出现在运算后面,先进行运算在拼接
    }
}
package operator;

//三元运算符
public class Demo08 {
    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.包机制、javaDoc

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

package 包名;

  • 一般利用公司域名倒置作为包名;com.baidu.www

  • 导入包 import com.kuang.base.Demo01;

package com.kuang.operator;

//导入这个包下所有的类
import com.kuang.base.*;
//三元运算符
public class Demo08 {
    public static void main(String[] args) {
        // x ? y :z
        //如果x==true,则结果为y,否则为z

        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type);

    }
}

作业:阿里巴巴开发手册

JavaDos命令

是用来生成自己的API文档的. 查看jdk帮助文档

参数信息:

    • @author作者
    • @version版本号
    • @since指明需要最早使用的jdk版本
    • @param参数名
    • @return返回值情况
    • @throw异常抛出情况
package com.kuang.base;

/**
 * @author kuangshne
 * @version 1.1
 * @since 1.8
 */
public class Doc {

    String name;

    /**
     *
     * @param name
     * @return
     * @throws Exception
     */
    public String text(String name) throws Exception{
        return name;
    }
}

生成文档:命令提示符javadoc -encoding UTF-8 -charset UTF-8 Doc.java
JavaSE入门知识总结(学习狂神day01)

作业:学会使用idea生成Javadoc文档!

javadoc配置
JavaSE入门知识总结(学习狂神day01)

上一篇:java第一阶段-JavaSE-Day12-多态


下一篇:JavaSE---(Java多线程)