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

前言:

我是一名前端开发人员,因为想自学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;//强制类型转换为byte
              System.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);
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值