当前位置: 首页 > news >正文

【java核心技术】Java知识总结 -- 语法篇

目录

    • 第三章 Java基本程序设计结构
      • 数值类型之间的转换
      • 位运算符
      • String类型的详解
      • 控制流程
        • 块作用域
        • swich语句
        • 带标签的break语句
        • 数组
        • foreach循环
      • 总结


下面是看Java核心技术卷1时觉的有必要进行总结的知识点。虽然有一些知识不是很常用,但是还是很有必要掌握的,对于构建完整的知识体系十分的重要。

第三章 Java基本程序设计结构

数值类型之间的转换

我们经常需要将一种数值类型转换成另外一种数值类型。

image-20220910010212922

其中实线表示的是无精度丢失的转换,虚线表示可能有精度丢失的转换。

比如将byte转换成short精度不会损失,而将int转换成float将会导致精度的损失。

位运算符

位运算符在实际的工作中虽然用的不多,但是知道它的语法和原理也是很有必要的。

image-20220910011330717

在本节中会涉及到原码,反码补码的知识可以参考下面的文章

计算机中原码,反码,补码详解

String类型的详解

如果想对于String有更加详细的认识,可以参考文章:字符串参考文章

下面主要讲的是StringBuilder,是线程不安全的,但是效率最高的。

效率的高低排序 StringBuilder>StringBuffer(线程安全的)>String

image-20220910111010887

StringBuilder builder = new StringBuilder();

当需要添加内容的时候,可以调用append()

builder.append(ch)  //添加一个单一的字符
builder.append(str)   //添加一个字符串    

image-20220910111313751

String completedString = builder.toString();

image-20220910111419303

image-20220910111636269

image-20220910111645719

控制流程

块作用域

image-20220910115159709

但是需要注意的嵌套的两个块不能有同名变量的声明。如下面的代码中将会报错。

public class Exer {
    public static void main(String[] args){
        int a;
        {
            int a;
            int b;
        }
    }
}

image-20220910115601223

swich语句

image-20220910120400985

image-20220910120418763

image-20220910120426051

其中的case标签可以是如下:

  • 类型为char、byte、short、或是int
  • 枚举常量
  • 从Java7开始,case标签还可以是字符串字面量

image-20220910120726341

带标签的break语句

在java中为了达到和c语言中goto语句相似效果的语句可以使用带标签的break语句,不过不太建议使用这个语句。

具体的用法

image-20220910121643042

image-20220910121729619

数组

  • 声明数组

在java中允许长度为0的数组,注意,需要注意的是长度为0的数组和null并不相同

下面两种定义长度为0的数组

int[] b = new int[0];  //长度为0的数据组
int[] c = new int[]{};  //长度为0得到数组 
  • 访问数组中的元素

image-20220910134054811

String[] a = new String[10];

image-20220910134138168

for(int i =0;i<10;i++) name[i] = "";

需要注意的是如果访问数组下标以为的元素,将会产生数组下标越界异常

foreach循环

语法格式为

for(variable:collection) statement

它定义了一个变量用于暂存集合中的每一个元素,并执行相应的语句(也可以是语句块)。collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList)。

for(int element:a) System.out.println(element);将打印数组中每一个元素,一个元素占用一行
int[] wei =new int[]{1,2,3,4,5};
System.out.println(Arrays.toString(wei));

image-20220910135220887

总结

本章为Java的程序设计结构的基础语法部分,在看完本章之后,对于一些觉得有疑惑的地方进行了代码的验证,同时对于一些不是很熟悉的知识例如位运算书中讲的不是很详细,并且感觉大部分的内容都已经忘记,因此为了弥补不足,通过查阅资料的方式进行进一步的学习。同时对于之前没有了解过的知识有了初步了认识比如带标签的break语句。看完本章的内容,整体上收获挺多,后面将更加更加认真的观看其它章节的内容,弥补不足指出。

相关文章:

  • Neo4j图数据库和GDS图算法应用
  • Hello, World
  • 蒋鑫鸿:9.10国际黄金原油最新外盘行情趋势点评附解一套技术指导
  • gem5 GPGPU-Sim 安装踩坑笔记
  • 【Linux私房菜】—— 远程登录与数据传输、Vim与Vi的基础用法、关机与重启、登录与注销、运行级别、root密码找回
  • JSR-133: JavaTM Memory Model and Thread Specification原文解析
  • html网页如何获取后台数据库的数据(html + ajax + php + mysql)
  • Spring之事务实现原理及其注解@Transactional底层和传播机制原理
  • 第14章: 集合
  • Java后端开发工程师学习笔记【狂神说Java笔记】
  • Linux上的中文输入法安装(Ubuntu + Kali五笔拼音)
  • java+php+python的公文审批系统-办公系统
  • 使用C语言+USRP B210从零开始实现无线通信(4) 接收检测与解调
  • Spark系列从入门到精通(二)
  • hive之full outer join(全连接)使用方法
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • php中curl和soap方式请求服务超时问题
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SQL 难点解决:记录的引用
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • windows下使用nginx调试简介
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 嵌入式文件系统
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 原生Ajax
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​Python 3 新特性:类型注解
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #14vue3生成表单并跳转到外部地址的方式
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Ubuntu(修改root信息)
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (+4)2.2UML建模图
  • (4)Elastix图像配准:3D图像
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (汇总)os模块以及shutil模块对文件的操作
  • (一) storm的集群安装与配置
  • *上位机的定义
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .gitignore文件---让git自动忽略指定文件
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net7 环境安装配置
  • .NET成年了,然后呢?
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .net专家(高海东的专栏)
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @GetMapping和@RequestMapping的区别
  • @Validated和@Valid校验参数区别
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [1127]图形打印 sdutOJ
  • [AIGC] 开源流程引擎哪个好,如何选型?