Java学习之JavaSE-Java语言基础

第一章:初识计算机和Java语言

一、计算机的体系结构

(一)计算机的基本概念

计算机(Computer)俗称电脑,是现代一种用于高级计算使用非常广泛的设备,主要由计算机硬件计算机软件两个部分组成。
计算机硬件是客观存在的各种计算机相关设备(看得见摸得到),而计算机的软件是用于控制各种硬件设备完成各种功能(看得见摸不到)。

(二)常见的主要硬件

1)中央处理器(CPU)

  • 是计算机中最核心的部件,类似于人的大脑。
  • 是一台计算机运算核心和控制核心,所有运算都由CPU完成。
  • 其功能主要是解释计算机指令以及处理计算机软件中的数据

2)内存

  • 是计算机中的存储部件,内存(Memory)也被称为内存储器。
  • 用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据
  • CPU可以直接访问内存的数据,而且效率比较高。(优点)
  • 容量小不能实现永久存储,一旦断电会造成数据的丢失。(缺点)
  • 时刻记住ctrl+s快捷键进行保存

3)硬盘

  • 是计算机中的存储部件。
  • 主要用于永久存放数据内容容量大且断电不丢失。(优点)
  • CPU不能直接访问硬盘中数据,若希望访问则需要先加载到内存中。(缺点)

4)输入输出设备

  • 其中键盘叫做标准输入设备,显示器叫做标准输出设备。

5)主板、机箱和电源等辅助设备

(三)常见的主要软件

  • 计算机软件(Computer Software)可分为系统软件应用软件系统软件就是操作系统,是其他软件的基础
  • 主流的操作系统有:Windows/Unix/Linux/IOS/Android。

计算机的体系结构图

Java学习之JavaSE-Java语言基础

(四)Java开发的常用工具

  • 文本编辑器(TE,Text Editor):记事本、Notepad++、Edit Plus、UltraEdit、…
  • 集成开发环境(IDE,Integrated Development Environment ):Jbuilder、NetBeans、Eclipse、MyEclipse、IDEA、…

(五)编写Java程序的流程

1、新建文本文档,将文件扩展名由xxx.txt修改为xxx.java;
2、使用记事本/Notepad++的方式打开文件,编写Java代码后进行保存;
3、启动dos窗口,并切换到.java文件所在的路径中;
4、使用javac xxx.java进行编译,生成xxx.class的字节码文件;
5、使用java xxx 进行解释执行,打印最终结果;

拓展:
若编写的Java代码中创建了包,如package com.company.test;
需要使用javac -d . xxx.java进行编译,生成包的文件夹以及xxx.class的字节码文件;
最后使用java 包名.xxx(如:java com.company.test.xxx)进行解释执行,打印最终结果。

打开dos窗口(命令窗口)的方式:
1.Win+R,输入cmd,回车
2…在程序所在路径下,Shift+右键,点击在此处打开命令窗口(win10的是在此处打开Powershell窗口),命令窗口中显示地址直接为程序所在路径
3.在程序所在路径的路径栏上直接输入cmd,回车即可打开命令窗口,命令窗口中显示地址直接为程序所在路径

常用dos命令

Java学习之JavaSE-Java语言基础

二、数据类型

(一)数据类型的分类

在Java语言中数据类型主要分为两大类:

  • 基本数据类型(熟记
    byte、short、int、long、float、double、boolean、char
  • 引用数据类型(了解)
    数组、类、接口、枚举、标注

注意:String不是基本数据类型,是引用数据类型

(二)常用的进制

  • 在日常生活中采用十进制进行数据的描述,逢十进一,十进制权重是: 100、101、102、…
  • 在计算机的底层采用0和1组成的二进制序列进行数据的描述,逢二进一,二进制的权重是20、21、22、…
  • 二进制中的最高位(最左边)用于代表符号位,若该位是0则表示非负数,若该位是1则表示负数
  • 八进制和十六进制其实都是二进制的简写。

(三)进制之间的转换

1)正十进制转换为二进制的方式

  • 除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将余数逆序排序
  • 拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0。
    拆分法举例:十进制45转二进制的结果是:0010 1101
    Java学习之JavaSE-Java语言基础

    4)负二进制转换为十进制的方式

    • 先减1再按位取反,合并为十进制整数后添加负号

    Java学习之JavaSE-Java语言基础

    (九)基本数据类型之间的转换

    • Java语言中基本数据类型之间的转换方式:自动类型转换和强制类型转换,又称隐式转换和显式转换。
    • 其中自动类型转换主要指从小类型到大类型之间的转换
    • 其中强制类型转换主要指从大类型到小类型之间的转换,语法格式如下:
      目标类型 变量名 = (目标类型)原类型 变量名;
    • 强转有风险,操作需谨慎!

    Java学习之JavaSE-Java语言基础

    3)逻辑运算符的短路特性

    • 对于逻辑与运算符来说,若第一个表达式为假则结果为假,此时跳过第二个表达式;
    • 对于逻辑或运算符来说,若第一个表达式为真则结果为真,此时跳过第二个表达式;

    4)逻辑运算符作用

    主要用于连接多个关系运算符作为最终运算的表达式,用于实现多条件的连接

    (五)条件/三目运算符

    • 格式:条件表达式表达式1: 表达式2
    • 判断条件表达式是否成立,若成立则执行表达式1,否则执行表达式2 。

    (六)赋值运算符

    • = 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量原来的数值。
    • 赋值表达式本身也有值,其本身之值即为所赋之值。
    • +=、-=、*=、/=、…

    拓展:

    • byte b = 1;
      b = b + 2; // 错误:不兼容的类型:从int转换为byte可能会有损失 =>byte + int 相加结果还是int类型
      b = b + (byte)2; // 错误:不兼容的类型:从int转换为byte可能会有损失 =>byte + byte 相加结果还是int类型,原因是编译器的优化,当byte + byte时,编译器自动将byte类型优化为int类型,再进行加法运算。
    • 编译器自动优化为int的原因是,byte的取值范围太小,两个byte相加很容易超过byte的取值范围,从而造成高位溢出,数据的丢失。
    • b = (byte)(b + 2); // 强制类型转换,将int类型转换为byte类型
      b += 2; // 不会报错,所以此表达式真正等价于b = (byte)(b + 2); 这也是与b = b + 2;表达式的区别所在

    (七)移位运算符

    • >> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充
    • >>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0补充。

    Java学习之JavaSE-Java语言基础
    Java学习之JavaSE-Java语言基础
    注意:位运算符没有短路特性,左右两边的表达式均要执行

    (九)运算符的优先级

    • ()的优先级极高。
    • =的优先级极低。
    • 若无法确认优先级,则使用()来确保即可。

    运算符的优先级列表

    Java学习之JavaSE-Java语言基础
    总结:
    • 从操作数个数来看,单目运算符的优先级高于双目运算符的优先级。
    • 按照运算符的作用来看,()这种级别最高,之后依次是算数运算符,位运算符,关系运算符,逻辑运算符,赋值运算符。

    第四章:流程控制语句

    一、分支结构(重点)

    (一)分支结构的概念

    • 当需要进行条件判断并做出选择时,使用分支结构。

    (二)if分支结构

    • 判断条件表达式是否成立
      => 若成立,则执行语句块;
      => 若不成立,则跳过语句块;

    (三)if else分支结构

    • 判断条件表达式是否成立
      => 若成立,则执行语句块1;
      => 若不成立,则执行语句块2;

    (四)if else if else分支结构

    • 判断条件表达式1是否成立
      => 若成立,则执行语句块1;
      => 若不成立,则判断条件表达式2是否成立
      => 若成立,则执行语句块2;
      => 若不成立,则执行语句块n;
    • if和else if都需要判断表达式的真假,else不需要,else if和else都必须配合if一起使用,不能单独使用

    (五)switch case分支结构

    • 计算变量/表达式的数值=> 判断是否匹配字面值1
      => 若匹配,则执行语句块1 => 执行break跳出当前结构
      => 若不匹配,则判断是否匹配字面值2
      => 若匹配,则执行语句块2 => 执行break跳出当前结构
      => 若不匹配,则执行语句块n
    • switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型。
    • switch() case 中,若default位于最后,则加不加break都可以,最终都会结束分支;若default不位于最后,位于其他位置,若不加break,同样会穿透到下面,不会结束分支

    二、循环结构(重点)

    (一)循环结构的概念

    • 在Java程序中若希望重复执行一段代码时,就需要使用循环结构。
    • 任何复杂的程序逻辑都可以通过顺序、分支、循环三种程序结构实现。

    (二)for循环

    • 执行初始化表达式=> 判断条件表达式是否成立
      => 成立则执行循环体=> 修改初始值表达式=> 判断条件是否成立
      => 若不成立,则循环结束

    (三)双重for循环的格式

    • 执行表达式1 => 判断表达式2是否成立
      => 若成立,则执行表达式4 => 判断表达式5是否成立
      => 若成立,则执行循环体=> 执行表达式6 => 表达式5是否成立
      => 若不成立,则内层循环结束=> 表达式3 => 表达式2是否成立
      => 若不成立,则外层循环结束
    • 双重for循环的特点
      1、外层循环用于控制打印的行数,内层循环用于控制打印的列数,外层循环改一下,内层循环从头到尾跑一圈。
      2、在以后的开发中若需要打印多行多列时,需要使用双重循环。
      3、多重循环不宜嵌套太多层,否则效率很低。一般到三重循环即可,最常见的就是双重循环。

    (四)while循环

    • 判断条件表达式是否成立
      => 若成立,则执行循环体=> 判断条件表达式是否成立
      => 若不成立,则循环结束

    (五)while循环和for循环比较

    • while循环和for循环完全可以互换,当然推荐使用for循环。
    • while循环更适合于明确循环条件但不明确循环次数的场合中。
    • for循环更适合于明确循环次数或范围的场合中。
    • while(true) 等价于for( ; ; ) 都表示无限循环。

    (六)do while循环

    • 执行循环体=> 判断条件表达式是否成立
      => 若成立,则执行循环体=> 判断条件表达式是否成立
      => 若不成立,则循环结束
    • do-while循环主要用于至少执行一次循环体的场合中。

    (七)continue关键字

    • continue语句用在循环体中,用于结束本次循环而开始下一次循环

    (八)break关键字

    • break用于退出当前语句块,break用在循环体中用于退出循环
    • for( ; ; ) -这种没有循环条件的循环叫做无限循环,俗称“死循环”。
    • 在嵌套的循环结构中,break用于退出所在循环体,如果要退出外层循环体,需要使用标号的方式。
    outer来源:bricklayer_hzc
                                                            

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月27日
下一篇 2020年7月28日

相关推荐