10.24-10.28Java基础

目录

一.计算机基础知识

1.计算机

2.计算机用途

3.计算机硬件

4.计算机软件

5.软件结构的划分

6.常用的dos操作命令

二.Java介绍

 1.Java发展历史

2.Java平台版本

3.Java语言的特点

4.JDK,JRE与JVM

5.Path环境变量的配置

 6.Path环境变量的执行流程

7.HelloWorld

 8.注释

9.关键字

10.标识符

11.常量

三.Java之变量

1.变量的概念:

2.数据类型有哪些

3.隐式转换和显示转换

四.Java之运算符

1.算术运算符

2.赋值运算符

3.赋值运算符经典题目

4.关系运算符

5.逻辑运算符

6.三元(三目)运算符

7.位运算符

五.Java之流程控制

1.顺序结构语句

2.if语句

3.If语句简单实现

六.心得体会


一.计算机基础知识

1.计算机

计算机是一个能够高速处理海量数据智能电子设备.
        由两部分组成: 软件和硬件

2.计算机用途

科学计算,利用计算机完成数据的运算
数据存储,完成一些文件的读和写,或者对一些数组内容排序...
计算机辅助设计:CAD工程制图
人工智能:利用计算机模拟人工思维!
媒体应用:动画,视频...
计算机网络:网络也很重要,一个台计算机没有网络,类似于电话没有电话线一个道理!

3.计算机硬件

概念:由电子,机械和光电元件组成的物理装置的总称!
组成:由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等等!

4.计算机软件

两种:
        系统软件:
                dos系统,windows系统,Linux系统,MAC系统,移动端:Android系统,ios系统
        应用软件:
            计算机上的安装的客户端软件,QQ,办公软件wps,wegame软件,....

5.软件结构的划分

C/S结构:Client-Server客户端和服务器端交互
    特点:
        客户端软件必须升级才能使用服务器端的高版本功能
B/S结构(架构):Browser-Server 浏览器端和服务器端交互
    特点:
        只要保证计算机上有浏览器,无论高版本还低版本都能够访问服务器

6.常用的dos操作命令

rd: 删除目录
del: 删除文件,写法: del 文件名.后缀名 或者 del *.后缀名(表示删除所有后缀相同的文件)
cd: 进入指定目录
cd..: 返回至上一级目录
cd\: 返回至此磁盘的根目录
盘名:: 切换磁盘
dir: 查看此目录下的所有文件夹
cls: 清空dos窗口
md: 创建目录
copy con 文件名.后缀名: 新建一个文件,以ctrl+z结束
rd /s: 询问并删除指定文件夹
rd /s /q: 不询问直接删除指定文件夹

10.24-10.28Java基础_第1张图片

二.Java介绍

 1.Java发展历史

Java是1995年诞生的,Java之父是詹姆斯,高斯林

2.Java平台版本

JavaSE(Standard Edition): 针对桌面应用程序的解决方案
JavaME( Micro Edition) :针对嵌入式设备提供的一套解决方案
JavaEE( Enterprise Edition)    :针对企业级开发解决方案(以后就是搞这个的!)

3.Java语言的特点

        Java语言是易学的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员 很容易学习和使用Java。

        Java语言是强制面向对象的。Java语言提供类、接口和继承等原语,为了简单起见, 只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制 (关键字为implements)。
        Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编 程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类 库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程 方法激活)机制也是开发分布式应用的重要手段。

        Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序 健壮性的重要保证。对指针的丢弃是Java的明智选择。

        Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机 制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的 名字空间以防替代本地的同名类、字节代码检查。

        Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被 编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个 Java平台的任何系统中运行。

        Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统的解释器中运行。

        Java是性能略高的。与那些解释型的高级脚本语言相比,Java的性能还是较优的

        Java语言是原生支持多线程的。在Java语言中,线程是一种特殊的对象,它必须 由Thread类或其子(孙)类来创建。

4.JDK,JRE与JVM

JDK(Java Development Kit):

        JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了 JRE。所以安装了JDK,就不用在单独安装JRE了。

JRE(Java Runtime Environment):

        包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JVM(Java Virtual Machine):

        Java虚拟机

5.Path环境变量的配置

方式一:

             1)将jdk的bin目录的路径复制 win10/win11--->此电脑--->右键----属性----->高级系统上设置---->环境变量 ---->系统变量,不要在用户变量找path,在系统变量找path (用户变量,一个计算机可以有多个用户)

        path不要删除别的东西,别的东西都是系统配置,谨慎不要随意删除!

将1)里面jdk的bin目录的路径复制过来放在path里面,

        配置完成之后,打开dos窗口,在任何路径下都可以使用javac和java(c盘系统盘,有的文件夹没有权限) 输入javac java java -version 都是有提示信息,说明可以用了   

方式二:(推荐)

        配置方式1的弊端:

                当我们jdk版本升级了,需要手动更改系统变量的里面path,可能改动过程中不小心将别的环境变量误删了,为了避免 这个问题我们不能改动path了,使用方式2配置! (主要原因)             

        配置方式步骤 :

                1)赋值jdk安装目录的路径,不是bin目录 D:\develop_software\Java\jdk1.8.0_162

                2)此电脑---->右键---->选择属性---->高级系统设置---->环境变量---->系统变量 系统变量----->新建一个变量名: JAVA_HOME 变量值:就是1)的路径

                3)在path里面 引入JAVA_HOME对应的变量值的路径 3 .Path环境变量的执行流程 无论使用第一种方式是还是第二种方式,在配置之前,如果你已经打开了dos窗口, 那么配置完成之后,要生效的话,必须将当前dos窗口关闭,重新进入dos窗口 (windows+r--->输入cmd,在进去) 4 .classpath(找你的字节码文件):临时环境变量(了解,不作为重 点) path环境变量里面的最前面 %JAVA_HOME%\bin ,如果win10/win11 点击path,隔段形式,后面不用分号 如果是在一行上bin后面带上分号;

                好处:以后jdk版本升级,需要改动path? 不需要,只需要改动JAVA_HOME变量值里面的路径   

10.24-10.28Java基础_第2张图片

10.24-10.28Java基础_第3张图片

 6.Path环境变量的执行流程

        1)首先肯定需要在指定目录中找对应的.java文件, 举例:如果.java文件是在D盘根目录下,肯定需要现在这个D盘里面 javac xx.java--->进行编译和运行 如果当前指定目录有这个java文件,直接编译和运行!

        2)如果在当前这个指定目录找不到,它就会去系统变量path环境变量里面找 : jdk安装目录的bin里面去找,如果这里面也没有,最终,提示----"找不到文件!"

7.HelloWorld

在java文件所在目录下,进入cmd

使用javac 文件名.java进行编译,随后会产生类名.class(字节码文件)

使用java 类名运行

class  HelloWorld{ 
	public static void main(String[] args){
		System.out.println("helloworld, 你好世界") ;
	}
}

10.24-10.28Java基础_第4张图片

 8.注释

//单行注释

/*  */多行注释

/**  */文档注释

提高了代码的阅读性;调试程序的重要方法。

注释是一个程序员必须要具有的良好编程习惯。

将自己的思想通过注释先整理出来,再用代码去体现

9.关键字

Java的关键字:
        被Java语言赋予特定含义的单词,叫关键字!

例如:

        class, interface,enum, byte, short, int, long, float, double, char, boolean, void等等

10.标识符

标识符:(起名字,"见名知意")

            Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符

组成规则:
        1)由0-9的数字组成
        2)字母字符(26个字母)
        3)$符号
        4)_下划线

包名:

        全部小写,可用层级结构,例如: com.company.java代表有com文件夹下有company文件夹下有java文件夹.例如:com.baidu.java

类名和接口名:

        要用大驼峰,即每个单词的首字母大写,例如:DemoTest

变量名和方法名:

        要用小驼峰,即第一个单词小写后面的单词首字母大写,例如,nameString

常量名:

        全部大写,单词和单词之间用_隔开,例如MIN_NUMBER

注意事项:
        起名字,可以数字,但是不能以数字开头
        Java严格区分大小写,一定要起名字见名知意

11.常量

答:常量在程序执行过程中,其值不发生改变的量
        分别有字符串常量: 使用英文的符号"" 双引号括起来的任何内容都是字符串

                   字符常量: 使用英文的'' 单引号阔括起来的单个字符内容

                                        如果字符不参与运算,就是字符本身!

                                        如果字符参与运算的时候,此时 字符(键盘上的每一个按键都是字符)                                         它就会去找ANSI码表里面的字符对应的值,进行运算;

                   整数常量: 

                   小数常量: 

                   布尔常量: true/false

                   空常量: 一般不能直接输出null,引用数据类型默认是null

三.Java之变量

1.变量的概念:

什么是变量?

        在程序过程中,其值发生改变的量即是变量

学习Java编程语言,在Java中,如何定义变量?

        变量的三要素

                1)数据类型

                2)变量名

                3)初始化值

定义变量的方式:

        1)先定义,然后在赋初始化值

                数据类型 变量名;

                变量名 = 值; (在使用这个变量之前,必须赋值,否则编译报错!)

        2)要么直接定义时候赋初始化值

                数据类型 变量名 = 初始化值

2.数据类型有哪些

分为两大类:

        基本数据类型和引用数据类型

        2.1 基本数据类型

                四类八种

                1)整数类型

                        byte:字节类型         占1个字节         范围:-128~127(必须记住)

                        short:短整型           占2个字节

                        int(默认) 占4个字节

                        long:长整型            占8个字节 在定义long 的时候,规定,在初始化值加上L或者l

                

                2)浮点类型:默认double

                        单精度类型float ,在定义float类型后面规定, 占4个字节 需要标记,在初始化值的后面加上F或者f

                        双精度类型duoble: 占8个字节

                3)字符类型: char: 里面的内容'字符' 占2个字节

                4)布尔类型:开发中,逻辑判断的true还是false的结果

                        boolean 一般boolean不参与运算,只是表示true或者false 占1个字节

         2.3 引用数据类型:

                        数组,类,接口 类(具体类/抽象类)

3.隐式转换和显示转换

什么是隐式类型转换?

        无法直接观察到的类型转换,就是隐式类型转换

         对于计算机来说,只有加法运算,其余的运算都是通过加法来实现的,并且计算过程都是在CUP上进行的,而CUP运算器一般都是4字节的长度,也就是int类型的长度,就只能处理4字节的加法运算,所以在处理数据时通常会发生整型提升。

变量的运算注意--->变量的数据类型一致,才能运算        

        Java中隐式类型提升(隐式转换)(基本数据类型非常重要的语法)
        boolean不参与任何运算(不能转换)
        byte,short,char三者之间不会相互转化,一旦参与运算,会优先提升int--->long--->float--->double(默认类型提升,也称为隐式类型转换)

        例:

                byte b1 = 3;

                int n;

                int  = b1 + 10;//因为10默认是int类型的,所及b1在参与运算是会自动提升为int类型

什么是显示类型转换?

        显示转换:强转类型转换:就是将大的数据类型---转换成小的数据格式

        目标数据类型 变量名 = (目标数据类型)初始化值;

        例:

                short s = 32;

                byte b;

                b = (byte) s + 10;

1)变量和常量相加区别:

                变量相加,需要考虑类型转换,(Java中隐式类型转换) byte,short,char三者不转换,一旦参与运算,优先提升int,--->long--->oat--->double

                常量相加:先相加,然后看计算的结果是否在接收类型范围内,在直接用,否则,需要处理!

四.Java之运算符

1.算术运算符

基本算数运算符:
                +, -, *, /, %(模,求余)
                注意事项:
                        /:默认取整的

        

        //计算机对小数计算(伪计算)
        //除或减,结果可能是无限近似于某个值,不太精确!
        //后面常用类,Java提供类BigDecimal:对小数可以进行精确计算

扩展的算数运算符
            ++或者--
                    1)场景--->统计场景(统计用户的登录次数,猜数字游戏,统计用户多少次猜中了)
                    2)流程控制语句循环结构语句中--->++或者--
            使用方式
                1)不参与运算,单独使用
                        a)在数据的前面
                        b)在数据的后面
                            结论:无论++或者--在数据的前面或者后面,都是对当前数据自增1或者自减1
                2)参与运算
                        a)在数据的前面
                        b)在数据的后面
                            结论:++或者--在数据的前面,先进行自增1或者自减1,然后参与运算!
                                 ++或者--在数据的后面,先运算,然后进行自增1或者自减1!

2.赋值运算符

基本的赋值运算符
            =
    举例:
            int a = 10;
            将1-这个数据赋值给int类型的变量a
        将等号右边的值赋值给等号左边的变量
        
        这个"="不能写成"==",后者是比较,最终的结果无非true或者false
        
    扩展的赋值运算符
        +=, -=, *=, /=, %=
            举例:
                int b = 100;
                b += 200;//如果明确了具体的数据类型(整数默认int) b = b + 200;
                
                将这个扩展的赋值运算符的左边的变量和右边的数据值相加,在赋值给左边的变量

3.赋值运算符经典题目

面试题:
            short s = 1;
            
            1)s = s + 1;
            2)s += 1;
            
            这个1), 2)两段代码,哪一个会编译失败,哪一个成功,为什么?
            
            1)这个代码会编译报错,因为存在Java隐式类型转换
              byte,short,char三者之间不转换,一旦参与运算,优先提升为int,所以
              s = s + 1;s先提升int和1相加,结果是int类型,而s类型short,无法接收int类型结果
              
            2)s += 1;会成功,
              因为扩展的赋值运算符+=, -=, *=, /=, %=,有一个特点:隐藏了强制类型转换
              s += 1此时等价于s = (short) (s + 1);

4.关系运算符

比较(关系)运算符
    
    <, >, <=, >=, ==, !=
    
    注意事项:
        1)这些符号无论连接的表达式是简单的还是复杂的,
          最终结果要么是true要么是false
          
          2)==是比较,不能写成"=",否则编译报错
          
          ==是在基本数据类型用的,比较的是两个数据值是否相等

5.逻辑运算符

逻辑运算符,开发中,常用于逻辑判断!
    
    基本的逻辑运算符:
                逻辑单与&:(并列关系)
                            有false,则false;多个并列条件必须同时满足才能成立,否则,不成立
                逻辑单或|:或的关系
                            有true,则true,多个条件,有一个满足即可成立!
                逻辑异或^:
                            相同则为false,不同则为true;
                            简单记:男女关系
                                    男男
                                    女女
                                    男女
                                    女男
                逻辑非!:
                            非true,则false,非false,则true

扩展的逻辑运算符
            逻辑双与&& 和逻辑双或||
            
            逻辑双与&&:
                连接的表达式如果左边为false,则右边不执行(具有短路效果)
            逻辑双或||:
                连接的表达式如果左边为true,则右边不执行(具有短路效果)
            
            
    面试题:
            逻辑双与&&和逻辑单与&有什么区别?
            共同点:
                    无论是逻辑单与&还是逻辑双与&&都是表达并列关系,
                    而且都是有fasle则false!
                    
            不同点:
                    
                    逻辑单与&,对多个并列条件在执行的时候,效率比较低,因为都
                    需要将这个符号左边的表达式和右边的表达式都需要执行一遍!
                    
                    逻辑双与&& ,
                        连接的表达式如果左边为false,则右边不执行(具有短路效果)
                        开发中扩展的逻辑运算符,代替基本的运算符,执行效率高!

6.三元(三目)运算符

三元运算符(三目运算符)
    
    格式:
            (表达式) ? 执行true的结果 : 执行false的结果;
            
    执行流程:
            表达式可以简单可以复杂,如果结果是true成立,则执行成立的结果
            否则不成立,则执行false的结果
            
    需求:
            定义变量,求两个变量的最大值(没有提示,都是int类型)

7.位运算符

位运算符号:-----哈希里面涉及到位运算符号
        基本的位运算符号:
                    位与&
                    位或|
                    位异或^

                                位异或的特点:
                                    一个数据被另一个数据位异或两次,其值是它本身
                    反码~
            
        移位符号:
                    << 左移     结论
                    >> 右移      结论
                    >>> 无符号右移

位运算符里面的移位符号的特点
    
            <<:左移    
                    将这个数据补码---进行左移,
                        多余的位数(最高位)丢弃掉,在右边补0
                    
                        结论: 使用<<符号左边的数据乘以2的移动次幂
                
            
            >>:右移
                    将数据补码进行右移,最高位是1,左边补1,如果最高位是0,左边补0,多余的位数丢弃掉
                    结论:将>>左边的数据除以2的移动次幂
            
            >>>:无符号右移
                    将数据的补码进行右移,将多余的丢弃掉,无论最高符号位是1还是0,左边永远是补0

8.键盘录入数据

        让我们书写程序的时候,更加灵活----通过键盘录入数据

        Scanner类就提供了很多功能(方法)--->快速键盘录入一些int类型,来进行运算或者写具体的逻辑!

        导包

                为了进行数据逻辑判断操作的时候,程序更灵活一些
                Jdk提供了类供我们使用----->文本扫描器   java.util.Scanner类
                在Java中,只要我们用的其他类,只要不是java.lang.xxx类都需要导包
                            java.lang.String
                            java.lang.Integer
                            java.lang.Math
                            .....

                import java.util.Scanner;

        实例化Scanner对象

                Scanner scanner = new Scanner(System.in);

        键盘录入对应类型

                int n = scanner.nextInt();

五.Java之流程控制

1.顺序结构语句

流程控制语句
        顺序结构语句 :比较简单,所有程序都是通过jvm调用main进行的(入口)
                    代码右上而下依次加载,除非在加载后面代码之前,jvm退出了!
                    
                    
        选择结构语句
                if
                switch
        循环结构语句
                for
                while
                dowhile

2.if语句

选择结构语句之if
        格式1:
                if(表达式){
                    语句;
                }
                
                场景:针对单个情况进行判断  
        格式2:
                if(表达式){
                    语句1;
                }else{
                    语句2;
                }
                场景:针对两种情况进行判断
        格式3:
                if(表达式1){
                    语句1;
                }else if(表达式2){
                    语句2;
                    ...
                    ...
                    ...
                }else{
                    语句n;
                }   
                场景:针对多情况进行判断


       上面格式1的流程:

        //格式1:{}里面单条语句,可以省略,但是前期不建议
        if(表达式){          
            语句;
        }
        
        表达式是否成立,成立,则执行语句;
        否则,不执行

if格式2:
        if(表达式){
            语句1;
        }else{
            语句2;
        }
        场景:针对两种情况进行判断  (开发中使用最多的格式)
        
             完成"登录"/"注册"
             
             
执行流程:
            表达式成立,则执行语句1;
            否则,执行语句2;    
            
            
    注意事项:
            无论if格式哪一种,不能再if后面来一个;  
            记住:有{大括号的地方,不能有分号,有分号地方不能有左{
                
                
    使用格式2:完成简单模拟"登录"


        String:Java中的类,代表字符串   (后面常用类里面说)
        
        字符串进行比较: String类的   字符串值1.equals(字符串值2) ,是比较字符串内容是否相同

3.If语句简单实现

需求:

        

使用格式2:完成简单模拟"登录"


        提示:
            String:Java中的类,代表字符串   (后面常用类里面说)
        
            字符串进行比较: String类的   字符串值1.equals(字符串值2) ,
                是比较字符串内容是否相同

        已知:
                String username = "admin" ; 用户名
                String password = "123456" ;  密码
        
            键盘录入用户名和密码和已知的用户名和密码都已知,才能提示"登录成功",
            否则"用户名或者密码错误"

import java.util.Scanner;

class IfTest {
	
	public static void main(String[] args) {
		
		//已知
		//用户名
		String username = "admin";
		String password = "123456"; 
		
		//创建键盘录入对象
		Scanner scanner = new Scanner(System.in);
		
		//提示并录入数据
		System.out.println("请输入用户名:");//用户名录入的字符串
		//  键盘录入对象名.nextLine()   固定写法
		String inputUsername = scanner.nextLine();
		
		System.out.println("请输入密码:");//用户名录入的字符串 
		//  键盘录入对象名.nextLine()   固定写法
		String inputPwd = scanner.nextLine();
		
		//if格式2 使用它完成逻辑判断
		/*
		字符串进行比较: String类的   字符串值1.equals(字符串值2) ,
				是比较字符串内容是否相同
		*/
		//录入的用户名和已知的存在的用户名对比,如果一致,并且录入的密码和已知的密码一致,登录成功
		if (inputUsername.equals(username) && inputPwd.equals(password)) {
			System.out.println("登录成功");
		} else {
			System.out.println("用户名或者密码错误");
		}
	}
}

六.心得体会

        目前为止,学的东西大部分还比较简单,对我比较难的是位运算符,需要好好自己推导几个题才可以熟悉,if...else语句并不难,很容易就可以理解,今后学的东西还有很多,要养成预习复习的好习惯.

你可能感兴趣的:(java)