JavaSE复习笔记

2023-11-18

第一章 Java概述

一、计算机语言

  1. 机器语言
  2. 汇编语言
  3. 高级语言

二、跨平台原理

Java可以在一处开发到处运行,即在一类操作系统上开发的程序,可以在任何操作系统上运行。

不同的操作系统有不同的JVM,java是运行在JVM上,从而实现了跨平台。

  1. JVM:Java虚拟机
  2. JRE:Java运行时环境=JVM+核心类库
  3. JDK:Java开发工具集=JRE+开发工具
  4. 三者关系:JDK包含JRE,JRE包含JVM

三、JDK安装与配置环境变量

安装时建议不要单独再安装公共jre。

配置环境变量:

  1. 目的:更方便的在任意目录下使用开发工具
  2. 电脑-》右键属性-》高级-》系统环境变量-》新建变量名JAVA_HOME,变量值java安装目录-》编辑path变量,添加变量值:%JAVA_HOME%\bin;

四、入门程序

  1. 开发程序的步骤
    1. 编写源代码
    2. 使用javac命令编译源代码,产生对应的.class字节码文件
    3. 使用java命令运行字节码文件,产生结果
  2. 注意事项:
    1. 源码中使用的字符,严格区分大小写,
    2. 必须是英文状态下的标点符号等
    3. 括号必须成对出现
    4. 创建类时,建议使用public修饰符,如果有public,类名必须与文件名一致
    5. 可以创建多个类,只能有一个public的
    6. 编码要一致

第二章 基础语法

一、注释

给程序员开的说明性文字

  1. 单行注释 //注释内容
  2. 多行注释 /*注释内容 */
  3. 文档注释 /**注释内容 */

二、关键字

Java赋予了特殊含义的字符序列(单词),比如:public class static void

保留字:const ,goto

特殊值:true ,false,null

三、标识符

用于给类,方法,变量等起名字的字符序列。

  1. 命名规则:必须遵守的
    1. 由英文字母、数组、下划线_,美元符号组成
    2. 不能是数字开头
    3. 不能使用关键字
    4. 严格区分大小写
  2. 建议遵守的命名规范:
    1. 见名知意
    2. 类名,接口名:大驼峰发则 XxxYyy
    3. 方法名,变量名:小驼峰 xxxYyy
    4. 包名:全小写 com.atguigu.test
    5. 常量名:全大写 ,多个单词下划线隔开。 MAX_VALUE

四、常量

程序运行过程中,其值不可改变的量

  1. 字面量。比如:字符串"hello",整数100,浮点数12.3,布尔值true或false,字符‘a’,空值null

  2. 自定义常量,使用关键字final

    final double PI = 3.1415926

五、变量

程序运行过程中,其值可以改变的量

  1. 声明格式

    数据类型 变量名; 示例:int age;

  2. 初始化值

    开辟内存空间并给赋值,示例:age=18;

  3. 声明并初始化

    格式:数据类型 变量名 = 初始值;

    示例:int age = 18;

    示例:int a=1,b=2,c=3;

六、二进制存储

二进制存储数据

  1. 整数的存储,底层按照补码形式存储

    1. 原码:最高位是符号位,0是正,1是负数,其他为数值位。
    2. 反码:原码基础上,符号位不变,数值位按位取反,0变1,1变0
    3. 补码:反码基础上加1

    正数的原码,反码,补码都相同,负数按照以上规则得出。

  2. 小数的存储

    1. java浮点数无法精确存储小数
    2. 同样字节大小的存储小数的范围远大于存储整数的范围
  3. 字符的存储

    编码表:每个字符都有唯一对应的二进制数值

    ASCII码表:英文字符,其他编码表都向下兼容此编码方式

    GBK:中国编码表

    Unicode的:万国码,统一码,Java本身支持的编码表

    UTF-8:编码方式

七、数据类型

1.分类
  1. 基本数据类型

    1. 整数
      1. byte 1 -128~127
      2. short 2
      3. int 4
      4. long 8
    2. 浮点数
      1. float 4
      2. double 8
    3. 字符型 2 0~65535
    4. 布尔型 1 true/false
  2. 引用数据类型

    String,数组,类,接口等

2.类型转换

基本数据类型中,七种数值类型(除布尔类型外)可以相互转换类型。
byte、short、int、long、double、float、boolean

  1. 自动转换:数值范围小的类型转为数值范围大的类型

    1. 多个类型混合运算,自动提升为最大的类型
    2. byte,short,char之间进行运算,全部提升为int
  2. 强制转换:数值范围大的类型转为数值范围小的类型,容易损失精度

    1. 可以强制提升某个类型

      int a=1,b=2;
      double c=(double)a/b;
      

八、运算符

  1. 算数运算符

    加+ 减- 乘* 除/ 取余% 自增++ 自减–

    自增++,自减–

    1. 单独使用时,前置后置效果一样

      int a=10;
      a++;//自增1
      ++a;//自增1
      System.out.println(a);
      
    2. 复合使用时

      • 后置:先使用,再自增自减。

        int a = 10;
        int b = a++;//后置
        System.out.println(a);//11
        System.out.println(b);//10
        
      • 前置:先自增自减,在使用。

        int a = 10;
        int b = ++a;//前置
        System.out.println(a);//11
        System.out.println(b);//11
        
  2. 赋值运算符

    = += -= *= /= %=

    byte a = 10;
    a += 10;//可以,相当于a=a+10;
    a = a + 10;//编译不通过
    
  3. 关系运算符

    结果一定是布尔类型

    < > <= >= == !=

  4. 逻辑运算符

    操作数都是布尔类型的,结果也是布尔类型

    逻辑与& :两边都为真,才为真

    逻辑或|:一边为真,就为真

    逻辑非!:取反

    异或^, :两边相同为假,两边不同为真。

    短路与&&,:同单与

    短路或||:同单或

    为什么推荐使用短路与、短路或?

    短路与,短路或,当通过操作符左边的表达式结果,可以直接判断出最终结果时,右边不再执行,效率高。

  5. 条件运算符(三目运算符)

    格式:条件表示?结果1:结果2;

    注意:结果是一个数据(不能是输出语句)。

    int age=18;
    String s = age>=18?"可以开车了":"好好学习";
    
  6. 位运算符

    按照二进制位进行运算的运算符,运算效率高

    &,|,~,^ ,

    左移<< :左移n位,等于乘以2的n次幂。

    右移>> :右移n为,等于除以2的n次幂,除不尽时,向下取整。

    无符号右移>>> :底层二进制数据移动时,左边始终补0

  7. 运算符的优先级

    大体的排序:算术 > 位 > 比较 > 逻辑 > 三元 > 赋值

    第三章 流程控制

    1. 顺序结构:代码自上而下逐行执行
  8. 选择结构:根据条件不同,选择性的执行某些特定代码

    1. 循环结构:根据条件,重复执行特定代码

一、键盘录入

键盘扫描器 java.util.Scanner;

import java.util.Scanner;//导入
//....
//创建一个键盘扫描器
Scanner in = new Scanner(System.in);
//提示信息
System.out.println("请输入数据:");
//接收数据
int n = in.nextInt();//接收整数
char ch = in.next().charAt(0);//接收一个字符
String s = in.next();//接收字符串,遇到空白字符结束
String line = in.nextLine();//接收一个行字符串,遇到enter键结束。

二、分支结构

1.if语句
  1. 格式一:

    if(关系表达式){
    	语句块
    }
    
  2. 格式二:

    if(关系表达式){
    	语句块1
    }else{	语句块2
    
    }
    
    
  3. 格式三:

    if(关系表达式1){
    	语句块1
    }else if(关系表达式2){
    	语句块2
    }else if(关系表达式3){
    	语句块3
    }else{
    	语句块n
    }
    
    
  4. if语句嵌套

    if(年龄大18){
        
        if(男性){
           // 开车
        }else{
          //  
        }
        
    }
    
    
2.switch语句
  1. 格式:

    switch(常量表达式){
        case 常量值1:
            语句块1break;
        case 常量值2:
            语句块2break;
        case 常量值3:
            语句块3break;
        default :
            语句块
            break;
    }
    
    
  2. 格式说明

    1. 常量表达式的值跟case后面的常量值相等时,执行case后对应的语句块。
    2. 常量表达式值的类型,限定为6种:byte,short,int,char,String,枚举
    3. break关键字,用于跳出switch语句,如果没有会穿透执行下一个case语句块。
    4. case后面的常量值不能重复。
3.if与switch比较
  1. if语句的条件是布尔类型,更方便使用范围作为条件
  2. switch语句条件,只能是常量值,而且类型有限制
  3. 如果添加时固定的几个常量值时,可以使用if或switch,如果固定值的个数较多时,推荐使用switch语句。

三、循环语句

1.for循环
  1. 格式

       for(初始化语句①; 循环条件语句②; 迭代语句④){
       		循环体语句③
       }
    
       for(;;){
           循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环
       }
    
    
  2. 执行流程:①②③④②③④②③④…②

  3. 示例

    for(int i=0;i<5;i++){
        System.out.println(i);
    }
    
    
2.while循环
  1. 格式

    while (循环条件语句①) {
        循环体语句②;
    }
    
    while(true){
         循环体语句;//如果此时循环体中没有跳出循环的语句,也是死循环
    }
    
    
  2. 执行顺序:①②①②①②…①

  3. 示例

    int i=0;
    while(i<5){
        System.out.println(i);
        i++;
    }
    
    
3.do…while循环
  1. 格式

    do {
        循环体语句①;
    } while (循环条件语句②)
  2. 执行顺序:① ②①②①②…②

4.循环语句比较
  1. 如果循环次数确定,使用for循环
  2. 循环次数不确定,使用while
  3. 只是执行一次循环体,使用do…while
  4. for(;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaSE复习笔记 的相关文章

  • 如何在 Spring 5 MVC 中将 FilePart 转换为 byte[]

    我有从网络表单接收和上传文件的控制器方法 如何从 FilePart 中提取字节数组并将其保存到数据库 我可以通过使用 FilePart transferTo 将 FilePart 保存到文件中来完成此操作 但这看起来又慢又难看 有更好的方法
  • 32 位数字中 1 的数量

    我正在寻找一种在 32 位数字中包含 1 数量的方法 之间不使用循环 任何人都可以帮助我并向我提供代码或算法吗 这样做 提前致谢 See Integer bitCount int http java sun com javase 6 doc
  • Lambda 表达式更慢?

    我有下面这段代码 PriorityQueue
  • 我如何通过代码在 Anylogic 中创建路径空间标记元素

    我在anyloigic方面完全是菜鸟 现在我正在尝试通过代码创建简单的网络 具有两个点节点的网络 以及链接这些节点的路径 遇到一些问题 当我运行模型时 控制台显示 使用初始化 方法 但我已经知道 初始化方法在较低版本中已被弃用 我使用的是8
  • 如何将 openapi-generator 中的客户端包含在 gradle java 应用程序中?

    我想创建一个 gradle java 应用程序 它从 openAPI 规范文件生成客户端并使用该客户端 所以我创建了一个java应用程序gradle init 类型 应用程序 语言 Java DSL groovy 测试框架 Junit Ju
  • 具有 JPA、PostgreSQL 和 NULL 值的 JodaTime

    我试图将 JPA 的 JodaTime DateTime 字段保留到 PostgreSQL 但遇到了指向数据库 NULL 值的空指针的问题 我正在使用 NetBeans 7 beta 2 IDE 持久性实现是 EclipseLink 2 2
  • Java SWT 用户输入验证

    在 SWT 中进行用户输入验证时 Java 约定是什么 我读到有 FieldEditors 它们是非常方便的字段 但遗憾的是仅适用于首选项和对话框 我还了解到有一个 IValidator 接口 但它经常与数据绑定一起使用 就我而言 我的大多
  • Android 3.1 USB 主机 - BroadcastReceiver 未收到 USB_DEVICE_ATTACHED

    我经历过USB 主机的描述和示例位于developer android com http developer android com guide topics usb host html检测连接和分离的 USB 设备 如果我在清单文件中使用
  • Spring Data (JPA) 多个存储库,没有很多类

    在我当前的项目中 我使用 Spring Data JPA 并且有 20 多个 Entity类 我想为它们创建存储库 但创建另一个类 每个类适用于任何模型 Repository注释似乎是某种矫枉过正和大量 重复 代码 所有存储库类将如下所示
  • kafka消费端Offsets的一致性

    我有复制因子为 3 的卡夫卡主题min insync replicas 2 一个向该主题发送 X 条消息的生产者acks all 一段时间后 1 分钟内 在所有消息发送到主题后 将使用 java kafka 客户端为此主题创建新的消费者 使
  • 如何在生产中安全地更改会话 cookie 域或名称?

    我们最近意识到我们的会话 cookie 正在被写入我们网站的完全限定域名 www myapp com 例如 MYAPPCOOKIE 79D5DB83 domain www myapp com 我们希望将其切换为可以跨子域共享的cookie
  • 在 JUnit 测试中读取资源文件

    我在单元测试中读取文本文件 并将一些输入文本文件放置在资源文件夹中 以下是目录结构 src gt com gt au gt myapp gt util gt MyFileReader 测试 gt com gt au gt myapp gt
  • 如何自定义 JFrame 上的标题栏?

    我想在我的 Java Swing 桌面应用程序中拥有一个自定义的标题栏 最好的方法是什么 我可以通过在 JFrame 的构造函数中使用以下代码来使用 Swing 标题栏 this setUndecorated true this getRo
  • 飞碟中的外部 CSS

    我想知道如何在 Flying Saucer 中包含外部 CSS 在此之前THB我检查了所有可用的链接StackOverflow但它们没有帮助 这就是为什么我自己做这个的原因 TestCSS xhtml重命名版本TestCSS html 所以
  • Android 改造参数化@Headers

    我正在使用 OAuth 每次发出请求时都需要将 OAuth 令牌放入标头中 我看到 Header注释 但是有没有办法让它参数化 以便我可以在运行时传入 这是概念 Header Authorization OAuth var api vers
  • android中ScrollView中的图像

    在我的应用程序中 我想放置一个 png 文件 并且希望它在横向和纵向模式下都被视为滚动图像 请建议代码或示例 要使您的 Imageview 在高度不适合时滚动 您可以在 xml 中的 ScrollView 内添加一个 ImageView 并
  • 表达式的类型必须是数组类型,但它解析为浮点数

    当我编写 Java 代码时 我遇到了困难 我觉得我不知何故把这个概念弄乱了 就像我不确定这一点 void setScore float sco sco score public void setScore float sco int id
  • 如何在非Spring的构造型类中使用@Autowired

    我想在此类中使用该存储库 但是当我放置像 Component 这样的构造型时 我从 IDE 收到错误 无法自动装配 未找到 身份验证 类型的 bean public class CustomMethodSecurityExpressionR
  • 使用基于Optional内容的流

    我从不受我控制的服务获取可能为空的地图 并且想要处理它 比方说 过滤 映射并减少到我需要的单个元素 问题 是否有从Optional到Stream的 链接 我尝试过 除其他外 return Optional ofNullable getMap
  • 如何在 Android 上设置 Google Drive API?

    我一直在尝试将 Google Drive 功能集成到我的应用程序中 但我无法使用任何内置功能 因此我相信我要么错过了一个步骤 要么做得不正确 我正在遵循官方的 Google 开发者指南 https developers google com

随机推荐

  • 【windows】windows核心编程读书笔记

    关于Unicode编码 微软对对U n i c o d e支持的情况 Windows 2000既支持U n i c o d e 也支持A N S I 因此可以为任意一种开发应用程序 Windows 98只支持A N S I 只能为A N S
  • 华为OD机试 - 最长的指定瑕疵度的元音子串(Java )

    最长的指定瑕疵度的元音子串 题目描述 开头和结尾都是元音字母 aeiouAEIOU 的字符串为元音字符串 其中混杂的非元音字母数量为其瑕疵度 比如 a aa 是元音字符串 其瑕疵度都为0 aiur 不是元音字符串 结尾不是元音字符 abir
  • 六、STL容器:mySTL

    6 mySTL 6 1 复数类模板 complex lt gt include Complex h Test complextest cpp 6 2 容器 6 2 1 顺序容器 vector lt gt list lt gt deque l
  • 【CV】第 1 章:人工神经网络基础

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • ubuntu不能上网解决方法

    可能会是Network Manager 有BUG引起的 解决方法如下 首先 卸载掉Network Manager sudo apt get remove network manager 然后 手动配置网卡 在终端输入 sudo gedit
  • Shell之字符串、数组、内置命令、运算符

    文章目录 Shell字符串变量 Shell字符串变量 格式介绍 字符串的3种格式 字符串的3种格式区别 获取字符串的长度 小结 字符串拼接方式 Shell字符串变量 字符串截取 案例 小结 Shell索引数组变量 Shell索引数组变量 定
  • 神经网络的梯度下降法--基于手写数字识别神经网络(二)

    仅供个人学习使用 学习资料来源于 3Blue1Brown官方账号 上一节讲了神经网络的结构 本节主要讲神经网络是怎样进行学习 主要涉及两个内容 1 梯度下降的思想 Gtadient descent 2 隐含层神经元的真实目的 一 梯度 计算
  • C++报错无效的预处理命令include_C语言:全局变量在多个c文件中公用的方法!

    用C语言编写程序的时候 我们经常会遇到这样一种情况 希望在头文件中定义一个全局变量 然后包含到两个不同的c文件中 希望这个全局变量能在两个文件中共用 举例说明 项目文件夹project下有main c common c和common h三个
  • strapi的使用(一)

    一 strapi strapi是一个基于nodejs的CMS 内容管理系统 服务基于koa2 可以通过可视化页面简单的操作数据库建表 修改数据 配置权限等等 前端可以根据RESTful API 设计规范请求strapi默认配置的接口 获取到
  • 单片机设计_单路测温系统(AT89C51、DS18B20温度传感器、LCD1602)

    单片机测温系统 想要更多项目私wo 一 简介 此系统主要由AT89C51 DS18B20温度模块和LCD1602组成 大致的原理是DS18B20温度采集到的数据传送给AT89C51的P3 3 INT1 外部中断1 最后通过LCD1602显示
  • 让开发人员偷懒的正则表达式

    正则表达式是一种基于特殊模式符号系统的文本处理系统 简而言之 它为程序员提供了轻松处理和验证字符串的能力 它代表了DRY Don t Repeat Yourself 原则的实现 在几乎所有支持的语言中 正则表达式模式根本不会改变形式 在后端
  • github部署本地

    github的java项目部署到本地 通过idea 1 注册github 如果你没有github的账号 那需要注册一个 注册github可以参考 https zhuanlan zhihu com p 103268406 当然 由于githu
  • SSM项目-基于Java+Mysql的大学生奖助学金发放管理系统(附论文+源码)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 当前专栏 Java毕业设计 精彩专栏推荐 安卓app毕业设计 微信小程序毕业设计 演示视频 ssm112大学生奖助学金发放管理系统演示 源码下载地址 https download cs
  • HCNP Routing&Switching之MAC安全

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Spark 源码阅读一-启动脚本

    Spark Complile Help Links Because spark 1 5 need maven version 3 3 3 so i track the branch 1 4 git branch a git checkout
  • Day13 static-静态变量

    一 static 1 关于JavaBean类中的成员变量 public class Student private String name private int age private String gender 新增老师姓名 publi
  • 网页访问计数器 html,网页计数器(访问量)

    1 PHP实现网站访问量计数器 思路 用户向服务器发出访问请求 服务器读取访问次数文件 1 向客户端返回 服务器保存新的浏览次数 新用户访问 重复即可 解决方案 主要算法 1 数据文件 counter dat 2 读出数据文件 打开文件 如
  • Python Web:Flask异步执行任务

    Flask 是 Python 中有名的轻量级同步 web 框架 在一些开发中 可能会遇到需要长时间处理的任务 此时就需要使用异步的方式来实现 让长时间任务在后台运行 先将本次请求的响应状态返回给前端 不让前端界面 卡顿 当异步任务处理好后
  • jQuery empty() vs remove()

    https stackoverflow com questions 3090662 jquery empty vs remove http www cnblogs com yeer archive 2009 06 10 1500682 ht
  • JavaSE复习笔记

    第一章 Java概述 一 计算机语言 机器语言 汇编语言 高级语言 二 跨平台原理 Java可以在一处开发到处运行 即在一类操作系统上开发的程序 可以在任何操作系统上运行 不同的操作系统有不同的JVM java是运行在JVM上 从而实现了跨