# java 核心技术卷1 (原书第11版)通读 第一章:java的基本程序设计结构

article/2025/5/12 7:59:11

前言:

我是一名前端开发人员,因为想自学java,根据网络上的推荐顺序,决定从呼声最高的 java 核心卷 11版 读起(PS:其实12版已经出来了,但是只有实体书,没有电子版呀。实体书太贵了,70+。正版要100+。为了节省资源,多吃饭,就看了11版)。
目前准备好的环境如下:

  • java版本:17版本。没装18(据说有中文乱码bug)
  • IDE:intelliJ IDEA(正式,30天无限期试用版)

先准备这些,以后再有别的需要准备的,就另行安装。此书的前两章稍微过了一眼,觉得并没有什么深入了解和做笔记的必要。就直接从第三章开始了。毕竟学技术的着急呀。那么,下面就让我们来开始吧。

第一章:java的基本程序设计结构

第一个java程序

/*
*以下字段不是固定的,都是有可选项的。
*public:访问修饰符,表示程序的应用范围
*class:类,表明java程序中的全部内容都包含在类中
*FirstSample:类名,一般首字母会大写
*static:静态方法
*void:表示函数返回值
*String[] args:字符串类型的数组,名字是args。这里面的表示main方法的形参
*/
public class FirstSample{public static void main(String[] args){System.out.println("hello java");//输出hello java}
}

注意:

  • java区分大小写
  • java文件名必须与类名一致。
  • main方法必须是public的

看完之后可以使用ide 右键运行 来查看此段代码的运行结果。

数据类型

  • 基本类型

java提供了八种基本类型:包括(四个整数型,两个浮点型)一个字符类型,一个布尔型

类型描述补充最大最小值
byte(字节)byte数据类型是8位,有符号的,以二进制补码表示的整数默认值为0,byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一-123~127
short(短整型)short数据类型是16位,有符号的以二进制补码表示的整数默认值是0,一个short类型占int类型的二分之一-32768(-215)~32767(215 - 1)
int(整数型)int数据类型是32位,有符号的以二进制补码表示的整数-2,147,483,648(-231)**~**2,147,483,647(231 - 1)
long(长整数型)long数据类型是64位,有符号的以二进制补码表示的整数默认值是0L,注意需要在数字后面加上L表示(-263)**~**(263 - 1)
float(单精度,浮点型)float是单精度,32位,符合IEEE 754标准的浮点数float 在储存大型浮点数组的时候可节省内存空间;默认值是0.0f,浮点数不能用来表示精确的值,如货币
double(双精度,浮点型)double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数double类型同样不能表示精确的值,如货币;如果需要存储货币,那么使用BigDecimal类来表示
boolean(布尔值)布尔类型表示一位的信息
char(字符类型)char 类型是一个单一的 16 位 Unicode 字符;char 数据类型可以储存任何字符;最小值是 \u0000(十进制等效值为 0); 最大值是 \uffff(即为 65535)

整数和小数取值范围大小关系:
double>float>long>int>short>byte

  • 引用类型
    • 引用类型指向一个对象,指向对象的变量是引用变量,变量一但声明后,类型就不能被改变了。
    • 对象、数组都是引用数据类型
    • 所有引用类型的默认值都是null
    • 一个引用变量可以用来引用任何与之兼容的类型

常量与变量

  • 变量:

    • 格式——dataType dataName;

    • 带初始化的示例:int a = 10;

    • java10之后如果变量有初始值,并且可以通过初始值来反推变量类型的时候,可以不用写类型,直接用关键字 var 来声明

      var i = 10;
      System.out.println(i);//10 这样是没问题的
      
  • 常量:

    • 使用final关键字来声明,当然这个关键字也可以用来声明类和方法。都是不可改变的

      final var I= 10;//10  
      
    • 常量约定为全大写

数值类型之间的转换请添加图片描述

  • 自动转换

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isa7LgXD-1660664197396)(C:\Users\11075\AppData\Roaming\Typora\typora-user-images\image-20220816131654132.png)]

    • 整形、实型(常量)、字符型数据可以混合运算,运算中,不同类型的数据先转化成同一类型,然后进行运算

      数据类型转换必须满足如下规则:

      • 不能对boolean进行转换
      • 不能把对象类型转换成不相关类的对象
      • 在把容量大的类型转换位容量小的类型时必须使用强制类型转换
      • 转换过程中可能导致溢出或损失精度
      • 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入

      注意:必须满足转换前的数据类型的位数要低于转换后的数据类型

    • 实线箭头表述无精度损失转换,虚线则有可能损失一些精度

  • 强制类型转换

    • 条件是转换的数据必须是兼容的

    • 格式(type) value ,type是要强制类型转换后的数据类型

      public class QiangZhiZhuanHuan{public static void main(String[] args){int i1 = 123;byte b = (byte) i1;//强制类型转换为byteSystem.out.println("int强制类型转换为byte后的值等于"+b);}
      }
      

数组

  • 数组定义

    1,数据类型 [] 数组名如:int[] arrayName
    2,数据类型  数组名 []如:int arrayName[]
    推荐使用第一种
    
  • 数组创建

    1,静态数组:int[] arrayList = new int[]{1,2,3,4}简写:int[] arrayList = {1,2,3,4}如果用system.out.println(arrayList),会打印出[D@776ec8df,[D@776ec8df分为几个部分:[-表示类型,即这是一个数组D-表示当前数组元素类型@-表示一个间隔符号,这是固定格式776ec8df-表示数组的真正的地址值2,动态数组格式:数据类型[] 数组名 = new 数据类型[数组长度]
    
  • 访问数组元素:array[index]

  • for…each循环,因为这是后来加入的,所以格式如下

    for(int element:a){System.out.println(element)
    }
    
  • Arrays类中的常用方法:

    方法名接收参数描述示例
    fill(arr,fromIndex,toIndex)arr:原数组
    fromIndex:开始索引
    toIndex:结束索引
    填充一个数组,有开始索引,必定有结束索引Arrays.fill(arr,0,5)
    sort(arr,fromIndex,toIndex)arr:原数组,数组类型需要是整数型
    fromIndex:开始索引
    toIndex:结束索引
    数字排序,如果原数组是一个字符串的话,那么就是按照先大写后小写来排序的Arrays.sotr(arr);
    toString(arr)arr:原数组序列化成字符串Arrays.toString(arr)
    equals(arr1,arr2)arr1:数组1
    arr2:数组2
    比较两个数组元素是否相等Arrays.equals(arr1,arr2)
    binarySearch(arr,fromIndex,toIndex,element)arr:原数组
    fromIndex:开始索引
    toIndex:结束索引
    element:要查找的元素
    使用二分查找法来寻找元素,必须是排序后的数组。int[] arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 30));
    copyOf(arr,length)arr:原数组
    length:要复制的长度
    复制数组int[] arr2 = Arrays.copyOf(arr,length);
    copyOfRange(arr,fromIndex,toIndex,)arr:原数组
    fromIndex:起始索引
    toIndex:结束索引
    复制数组int[] arr2 = Arrays.copyOfRange(arr,3,4);

http://chatgpt.dhexx.cn/article/bfb74ZTj.shtml

相关文章

Java核心技术卷1:基础知识(原书第10版)

本书为专业程序员解决实际问题而写,Java基础知识面覆盖很完整,可以帮助你深入了解Java语言和库。在卷I中,Horstmann主要强调基本语言概念和现代用户界面编程基础,深入介绍了从Java面向对象编程到泛型、集合、lambda表达式、Swing …

【Java核心技术卷】I/O详析

文章目录 概述Java io基本概念关于流流的分类 Java io框架一、以字节为单位的输出流的框架图(1)框架图图示(2)OutputStream详解(3)OutputStream子类(4)引申:打印流 二、以…

java核心技术卷1基础知识整理

java核心技术卷1基础知识整理 1.java概述2.java程序设计3.对象与类4 继承5 接口、lambda 表达式与内部类6 并发 1.java概述 1.Java 剔除了 C 中许多很少使用、 难以理解、 易混淆的特性, 在目前看来, 这些特性带来的麻烦远远多于其带来的好处。 2.Java …

《Java核心技术卷1》

第3章 Java的基础程序设计结构 整型 用int类型表示一百万可以这么写(since 1.7) int a 1_000_000; System.out.println(a);//1000000可用0b或0B表示二进制(同样since 1.7) byte a 0b0000_0010; System.out.println(a);//2如出…

vue class style 三元运算

<span :style"{color: true ? red : }">test1</span> <span :class"{show: true,hide: false}">test2</span>

Vue 实现拖拽模块(一)拖拽添加组件

本文主要介绍了vue拖拽组件实现构建页面的简单实现&#xff0c;文中通过示例代码介绍&#xff0c;感兴趣的小伙伴们可以了解一下 本文主要介绍了 Vue拖拽添加组件的简单实现&#xff0c;具体如下&#xff1a; 效果图 实现思路 使用 H5 的新特性拖放操作来实现&#xff0c;拖…

vue拖拽三种方法

如果想拖拽排序的可以用组件&#xff1a;vuedraggable。 组件安装 npm i vuedraggable -S引入 import draggable from vuedraggable配置项 group: string or array 分组用的&#xff0c;同一组的不同list可以相互拖动 sort: boolean 定义是否可以拖拽 delay:number 定义鼠标…

Vue3 CSS v-bind 计算和三元运算

官方文档 中指出&#xff1a;CSS 中的 v-bind 支持 JavaScript 表达式&#xff0c;但需要用引号包裹起来&#xff1a; 例子如下&#xff1a; <script lang"ts" setup> const treeContentWidth ref(140); </script><style lang"less" scop…

【记】Vue - 拖拽元素组件实现

需求描述&#xff1a; 1.可实现PC/移动端元素拖拽移动 2.支持2种模式&#xff1a;1.元素跟随光标点放置2.元素在光标点平齐位置靠侧边吸附 市面上估计有很多这种组件和功能了&#xff0c;但我没找到合适的&#xff0c;用了VueUse的useDraggable Function感觉不太适合某些应用…

Vue:可拖拽组件

在实际开发中&#xff0c;很可能会遇到开发可拖拽组件的需求&#xff0c;目的是应对某些弹框组件会遮盖某些重要信息/可操作面板&#xff0c;通过可拖拽的形式可以将上层的弹框组件移动到其他位置&#xff0c;从而不影响整个系统的操作。下面&#xff0c;我们分两步走&#xff…

vue+ element 三元运算符设置按钮样式

效果图 代码块 <el-button-group><el-button size"small" click"notSelect()" :class"[status 1?isActive:]" autofocus"true" v-focus plain>待选</el-button><el-button size"small" click"…

vue三目运算符可以写html代码么,Vue-js之文本渲染、属性(样式)绑定、三元运算符、事件处理...

文本渲染之3种方式 1.{{}}&#xff1a;插值表达式 弊端&#xff1a;会出现页面闪烁问题 v-text&#xff1a;把vue实例中的内容当作纯文本&#xff0c;显示在浏览器 v-html&#xff1a;把vue实例中的内容进行渲染后&#xff0c;浏览器会再次执行文本渲染 {{msg}} let vm new Vu…

vue中的三元运算符

我们要做的效果如下&#xff1a; 如上图的全部分类效果&#xff0c;符号、的样式具体写法如下图&#xff1a;数据如下&#xff1a; 补充&#xff1a;我们一开始想的可能是在数据中直接加符号、&#xff0c;但是脑子想让我换个想法&#xff0c;所以想先控制显示&#xff0c;第一…

vue 在 html标签上 做三元运算

众所周知&#xff0c;在js 中 a<b?‘方法一’:‘方法二’ 这种 三元运算 是比较方便快捷&#xff0c;那么如何在html标签上直接使用呢&#xff1f; 在 标签包裹中&#xff0c;一半为内容&#xff0c;可以直接使用 例如&#xff1a; <p class"price">{{p…

抖音快手短视频去水印API,接口开发文档

开发者官网&#xff1a;http://api.lingquan166.com/ 简介&#xff1a;根据抖音、微视、小红书、皮皮搞笑等APP中复制出来的链接&#xff0c;解析获取短视频的标题、封面、无水印短视频地址等信息。 接口地址&#xff1a; https://api.lingquan166.com/dsp?token122917VU601…

【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )

一. 中断控制 ( 基于 S3C6410 开发板 ) 1. 关闭中断的两个步骤 (1) 关闭中断步骤 2. CPRS 寄存器中的中断控制位 (1) CPRS 寄存器简介(2) CPRS 寄存器 中断控制 相关 位 3. 中断使能寄存器 (1) 中断使能寄存器简介(2) 中断屏蔽寄存器简介 二. 关闭中断 代码示例 1. 汇编代码编…

图像哈希算法

最近在回顾一些经典的图像哈希算法&#xff0c;本文大致介绍了一些常用的图像哈希算法&#xff0c;暂时先列一个框架&#xff0c;待日后补充。 参考链接&#xff1a; 【1】基于内容的图像哈希算法研究 【2】图像聚类-谱聚类 【3】球哈希Spherical Hashing 部分哈希源码及大牛…

消息机制(Handle机制)

消息机制简介- Handler是Android消息机制的上层接口。Handle的使用过程简单&#xff0c;通过它可以轻松将一个任务切换到Handle所在的线程中去执行。通常情况下&#xff0c;Handle的使用场景是更新UI。 在子线程中进行耗时操作&#xff0c;执行完操作后&#xff0c;发送消息&…

魔百盒九联UNT402A_S905L3_线刷固件包_语音蓝牙正常

魔百盒九联UNT402A_S905L3_线刷固件包_语音蓝牙正常 固件特点&#xff1a; 1、适用于九联UNT402A&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&#xff0c;运行速度提升…