初识Java

 

Java概述

1、Java语言  半解释半编译

解释:语言。JS。浏览器可以直接运行JS文件。不需要翻译。.JS

编译:Java,Scala。hello.java是我们程序员写的,以10进制为单位写的文件。计算机只认2进制。我们所写的Java文件计算机是不认识的,我们需要有一个翻译把我们写的java文件翻译给计算机听。

2、Java历史

1995年,詹姆斯高斯林创建sun公司,发明了Java语言,印尼的爪洼岛咖啡。Java语言logo是一杯咖啡,寓意就是为全世界软件爱好者递上一杯热乎的咖啡。早期运用于移动端。2009年sun公司被Oracle(甲骨文)旧金山收购。Java是用什么写出来的---C和C++。C是万物之祖。

3、计算机:

软件:看得见摸不着。操作系统:Windows、Linux、macOS

硬件:看得见摸得着 CPU 显卡 内存16G 一块固态硬盘512以上。尽量不要买混合硬盘。CPU尽量在4核心以上。

电脑推荐:CPU4核,16G+512的内存硬盘。

4、内存:

物理内存、虚拟内存

5.操作系统  会操作一些基本指令

(1)打开指令控制台win+R

(2)输入盘符d:,直接切换到目标的盘

(3)cd返回上一级目录

(4)进入指定的目录cd a、

(5)dir指令查看当前目录下的文件和文件夹信息|dir是目录的缩写|

(6)创建一个空文件copy nul a.txt

(7)向文件内写入内容echo 123456>a.txt

(8)复制文件copy a.txt b.txt

(9)删除文件del a.txt 不走回收站,永久性删除

6.计算机的一些设置

1)显示后缀名

2)文件的浏览方式

3)建议不要用第三方杀毒软件。尤其是360,建议火绒

7.二进制

~可计算器.程序员工具进行进制之间的转换

存储单位:1bit=1位,1byte=8bit,1kb=1024b,1mb=1024k,1gb=1024m,1tb=1024g,1pb=1024t

二进制的加减法运算

十进制是逢十进一,二进制逢二进一。十进制世界的最大数为9,二进制世界的最大数为1

八进制 1234567

十六进制 0123456789abcdef

Java分为三个版本

JavaSE:做桌面应用程序。Java基础

JavaEE:企业级应用。要学习的

JavaME:手机端,已经淘汰

Java的特点

1、面向对象  我要找一个人来做,他做什么我不管

   面向过程  我自己要做什么

2、跨平台:平台就是操作系统。用Java写的软件可以在任意操作系统上运行。

3、简单性和C

4、解释执行计算机执行的是 .class文件,解释执行.class

5、多线程。多个任务同时进行

6、分布式

7、健壮性 强数据类型的语言,有异常处理和垃圾回收机制

8、安全性 可以通过第三方插件来设置一个安全防范机制

Java环境搭建

1、安装Java

2、配置环境变量

1)计算机-右键-属性-高级系统设置-环境变量-系统变量上新建JAVA_HOME(C:\Program Files\Java\jdk-11.0.15)-确定

2)找到原来就存在的Path,双击打开,不要动里面的原有的值,新建,粘贴jdk安装路径到bin目录的路径(C:\Program Files\Java\jdk-11.0.15\bin)或(%JAVA_HOME%\bin),点击所有的确定。

3)常用的指令 java,javac,javap,java -version,java -jar

java为啥咖啡 为什么java的logo是一杯咖啡_System

java为啥咖啡 为什么java的logo是一杯咖啡_System_02

 

java为啥咖啡 为什么java的logo是一杯咖啡_System_03

3、写一个程序

1)创建一个.java文件

java为啥咖啡 为什么java的logo是一杯咖啡_Java_04

2)通过cmd指令控制台找到这个Java文件

3)Java文件是我们写的,计算机不认识,现在我们需要翻译(编译)一下,使用Java指令操作hello.java,结果生成了一个hello.class。这个hello.class就是计算机要去解释执行的文件。这个hello.class我们是不认识的,说明这个hello.class是一个二进制文件,把我们写的hello.java以二进制的形式转成hello.class又叫字节码文件。

 

总结一下:

通过javac hello.java把它编译成了.class,系统去解释执行了这个hello.class。

到底是谁做的这些事?

在我们去配置环境变量的时候,实际上相当于在系统上去搭建了一台虚拟机

JDK:java developer kit java开发工具包。JDK10这个版本之前有单独的JRE;JDK11往后,没有单独的JRE。

JRE:java runtime environment java运行环境。如果只需要运行不需要开发,可以只安装JRE。

JVM:java virtual machine java虚拟机

 

初识Java

1.Java是严格区分大小写Hello hello

2.写代码的时候,一行代码要么用;结束,要么写{}

3.所有的符号都是英文状态下 输入法:全角|半角

4.代码提示,一定要注意看代码提示。如果你写的东西没有提示,多半是错的。

5.idea有报错功能,如果你发现你写的代码有错误,就别运行了

什么是类?

类,是Java开发中的一个最小单位,一个Java开发的项目是由一堆类组成的class

类的命名规则

在开发中,只要是可以命名的东西,标识符。

类名的命名规则:

(1)只能由字母,数字,下划线,美元符号$组成。数字不能开头。不建议使用$号,下划线尽量不要开头,下划线能别用也别用。推荐使用英文字母和数字,大部分字母(英文单词),驼峰式命名,如果这个类名由多个单词组成,每个单词的首字母要大写。

Java中的注释

1.单行注释//

2.多行注释/* */

3.文档注释/** */

三种注释都有调试代码的功能

/**
* 文档注释
*/
public class Ch01 {

    //  单行注释
    /*  多行注释  */
//    主方法
    public static void main(String[] args) {
//        控制台打印输出语句,快捷键sout
        System.out.println("你好");

    }
}

关键字

官方解释:这个字有它独一无二的作用

非官方的解释:在idea中变橙色(蓝色)的字就是关键字

关键字不能用来命名!!关键字都是小写的。Java中有多少个关键字---50个左右,其中有两个保留字(现在没用,暂定先留着goto与const)。

Java中的数据类型

两种:基本数据类型和引用数据类型

基本数据类型(都是关键字):4类8种--要求是会读会写、知道啥意思!

1、整型

byte:字节型 -128~127(256个数,中间有个0 为什么256个数,因为它占一个字节--2^8)

short:短整型 -2^15 - 2^15 2个字节-16位 2万多

int:整型 -2^31 - 2^31 4个字节-32位 4亿多

long:长整型 -2^63 - 2^63 8个字节-64位 很大 L/l

2、浮点型

float:单精度浮点型 4个字节-32位。很大,比long还大。小数 F/f

double:双精度浮点型 8个字节-64位。比long还大。小数

3、字符型

char:字符型 2个字节-16位 0~255

4、布尔型

boolean true和false 1个字节=8位 1位(1和0)有争议

public class Ch02 {

    public static void main(String[] args) {
//        字节型
        byte v1 = 10;
        System.out.println(v1);
//        短整型
        short v2 =20;
//        整型
        int v3 = 30;
//        长整型
//        使用长整型需要在值的后面加上一个L或l,推荐L
        long v4 = 300000000L;
//        单精度浮点型
//        使用float需要在值的后面加上一个F或f
        float v5 = 522222222.53333333F;
//        双精度浮点型
        double v6 = 5.6;
//        字符型
//        字符型需要加单引号,并且引号中只能放一个
        char v7 = '你';
//        布尔型
        boolean v8 = true;
        boolean v9 = false;
    }
}

变量

定义变量:为了后期的维护,以及重复使用。

减少使用字面量(常量)。

标识符,变量名的命名规则,小驼峰stuNo。变量的值通过等号 =赋值, 把等号右边的值赋值给左边的变量。

如果在程序中看见一个整数的字面量,没有任何数据声明,它默认是int。

如果在程序中看见一个小数的字面量,没有任何数据声明,它默认是double。

public class Ch03 {

    public static void main(String[] args) {
//        10是什么类型?int
//        10.5是什么类型?
        byte v1 = 127;
        long v2 = 30000000L;
        System.out.println(10.5);
    }
}

Java中的运算+ - * / %

数据类型严格的变成语言

Java中的除法如果是两个整数相除,得到的一定是整数。

-整数和整数做运算,得到的一定是整数。

精度

整型:4种整数类型,精度是和位数挂钩的,位数越大,精度越高

浮点型:double的精度比float要高

浮点型 > 整型

低精度和高精度的做运算,得到的一定是高精度数据类型的结果。

为什么int类型的数据给byte给不了?

大给小:有一种可能是小的装不下,所以大不能给小。

基本数据类型的转换:

1.自动类型转换(自动类型提升)低精度->高精度

2.强制类型转换 高精度->低精度。如果平白无故的想把低精度转成高精度也是得强转。

a++ ++a

本意都是让a自增1

a++:表示先赋值,后运算

++a:表示先运算,后赋值

看+号的位置,哪个先出来,结果就是哪个~

如:a=10 a++=10;++a=11

public class Ch05 {

    public static void main(String[] args) {
        int a = 10;
//        a++;//        a = a + 1;
//        a++ = 10 -> a = 11
//        ++a = 12 -> a = 12
//        a++ = 12 -> a = 13
        System.out.println(a++ + ++a + a++ + a);
//        a++:表示先赋值,后运算
//        ++a:表示先运算,后赋值
//        如果a=10,问:你a++等于几?->10  问你++a等于几?->11
    }
}

赋值运算符

+= -= *= /= %=

从计算结果来看,a+=1--->a = a + 1

赋值运算符可以进行数据类型的转换,包括a++也可以

public class Ch06 {

    public static void main(String[] args) {
//        赋值运算符
        byte b = 127;
//        b = b + 1;
//        b += 1;
        b++;
        System.out.println(b);
    }
}

比较运算符

结果都是布尔类型 true false

public class Ch07 {
//    比较运算符,结果都是布尔类型
//    >  >=  <  <=  ==  !=

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
//        a b在跟c做比较的时候会发生自动类型提升
        double c =10.0;
        System.out.println(a == c);
    }
}

逻辑运算符

与:

只有当所有条件都为true,它整体的结果才是true。如果有一个为false,则整体即为false。

双与:当发现条件中,只要有一个false,则停止判断

单与:无论有多少个false,所有条件都看

=》双与的效率高

或:

只有当所有条件都为false,它整体的结果才是false。如果有一个为true,则整体即为true。

双或:当发现条件中,只要有一个true,则停止判断

单或:无论有多少个true,所有条件都看

=》双或的效率高

非:取反

异或:

有假有真即为真,全真全假即为假

public class Ch08 {

    public static void main(String[] args) {
//        逻辑运算符  与 或 非 异或
        int a = 10;
        int b = 20;
//        与 &&(短路与)  &
//        或 ||(短路或)  |
//        System.out.println(a < 5 || b > 6);
//        异或
        System.out.println(a < 5 ^ b > 6);
    }
}

位运算符

public class Ch09 {
    public static void main(String[] args) {
//        位运算符
//        & |
//        00001010
        int a = 10;
//        00010100
        int b = 20;
//        System.out.println(a ^ b);
        int x = 2;
//        <<3 左移三位
//        System.out.println(2 << 3);
//        >>3 右移三位
//        System.out.println(x >> 1);
//        >>> 无符号右移:将运算符左边的对象向右移动运算符右边指定的位数
        System.out.println(x >>> 3);
    }

}

三目运算符

public class Ch10 {

    public static void main(String[] args) {
//        三元运算符  三目运算符
        int a = 10;
        double b = 20.5;
        char c = 'a';
//        条件表达式 ? 表达式1 :表达式2
//        Java里的三元运算符,要求:两个表达式的运行结果的数据类型是相同或可以自动转成相同的
        double max = a > b ? a : b;
        System.out.println(max);
    }
}

char的特殊性

public class Ch11 {

    public static void main(String[] args) {
//        char的特殊性
        char a = 'a';
        int i = a;
//        Java底层当中存在映射表  ASCII码
//        字符型abcdefg每一个字符在计算机保存时都是以ASC码的形式
//        char类型是16位,short是一样的,可以自动转换成int,long,float
//        当char自动转换成数值类型,会对应着ASCII码去转换
//        把整数类型转换成char类型,会对应着ASCII码去转换
//        由于char类型有这样的特殊性,开发中尽量不使用char
        System.out.println(i);
//        +号具有连接符的作用
        System.out.println('你' - '好' * '啊');
    }
}