java核心技术读书笔记

java的基本程序设计结构


1. 数据类型

1.1 整型

java的整型共包括四种类型,分别是int short long byte 这四种,这四种数据类型的占用内存与数值范围如下图所示。
在这里插入图片描述

1.2 浮点型

在java中总共提供两种浮点数据类型,分别是float double 这两种数据类型。具体的占用内存情况与数值范围如下图所示。
在这里插入图片描述

1.3 Unicode和char类型

char类型原本用于表示单个字符,但是Unicode出现后,有些Unicode字符可以用一个char值表示,同时也有另外一些Unicode字符需要两个char值表示。

1.4 boolean类型

boolean类型具有两个值,分别是falsetrue 两种类型,此外,整型值和布尔值之间不能进行相互转换。

2. 变量

2.1 变量初始化

声明一个变量之后,在使用变量之前,先要将其进行初始化,否则编译不会通过。

int vacatonDays;
System.out.println(vacatonDays);//Error --variable not initialized

其次java中可以将变量声明在任何地方,使用过程中尽量将变量声明在靠近第一次使用的地方

2.2 常量

在java中,使用关键字final来指示关键字,并且声明之后,不能再更改了,习惯上将常量用大写字母表示。
除了声明常量之外,也可以声明类常量,表明该常量可以在该类的许多方法中使用。通常用static final来声明一个类常量。

3 字符串

3.1 子串

可以从较大字符串中提取子串,如下所示:

String greeting="hello";
String s=greeting.substring(0,3);

通过上述方式创建了"hel"组成的子串

3.2 拼接

在java中,允许用+号对两个字符串进行相加,如下所示:

String a=hello;
String b=everyone;
String c=a+b;

上述代码c的结果就是helloeveryone
此外,当一个字符串与一个非字符串相加时,非字符串将会转换成字符串,如下所示

int age=26;
String str="my age is ";
String me=str+age;

则上述变量me的结果就是my age is 26

3.3 不可变字符串

在java中,将String字符串类对象称为不可变字符串,不能对字符串对象进行修改,如字符串"hello"永远是这五个字母组成,不能修改其中任意一个字符,但是可以修改字符串变量,如果要将字符串变量String greeting="hello"的最后一个字符转换成p!,则可以通过greeting=greeting.substring(0,3)+"p!",这样首先提取一定的字符串,然后进行相加。

3.4 检测字符串是否相等

  • 可以通过equals方法进行检测,具体检测方式如s.equals.(t),当两个字符串相等时,返回true,不相等则返回false
  • 上述中的st,既可以是字符串变量也可以是字符串面量,如"hello".equals(greeting)是合法的检测方式。
  • 当忽略字符串字符的大小写去检查字符串是否相等时,使用equalsIgnoreCase进行检测,如"Hello".equalsIgnoreCase("hello")

3.5 空串与Null串

空串""就是长度为0的字符串,空串的检测方法如下所示。

if(str.length()==0)或者if(str.equals(""))

4 输入与输出

4.1 读取输入

当需要在控制台输入数据的时候,先必须要构造一个Scanner对象,并与“标准输入流”System.in进行关联,具体方式如:Scanner in=new Scanner(System.in),然后下面就可以使用该对象进行输入了。如下几种方式

String name=in.nextline();//输入可能包含空格的字符串
String firstname=in.next();//输入不包括空格的字符串,如一个单词
int age=in.nextInt();//输入一个整数
double point=in.nextDoule();//输入一个浮点数

4.2 格式化输出

  • 除了常见的System.out.println("hello")这种输出方式外,还有格式化将一些数值进行输出。如变量double x=12345.234System.out.printf("%8.2f",x),表示输出8个字符且小数点后有两位字符的结果。因此,对应的输出结果是12345.23
  • 同时也可以将多个参数进行输出,如下所示
System.out.printf("hello, %s. Next year, you'll be %d",name age);
  • 此外,还可以在输出的同时加各种输出标志,如逗号标志就表示一种分组的分隔符,可以用于将长的数字在输出的时候用逗号隔开输出。如
System.out.printf("%,.2f",3333.333333);
上述输出结果是3,333.33

除此之外,还有许多标志用于数据的格式化输出,如下图所示。
在这里插入图片描述

  • 可以使用String类中的静态方法String.format()方法创建一个格式化的字符串,而不用于输出。如下面所示
    String message=String.format("hello, %s. Next year, you'll be %d",name age)

4.3 文件输入与输出

  • 读取文件时,需要用一个File对象构造一个Scanner对象,接着进行读取,如下所示
Scanner in =new Scanner(Paths.get("myfile.txt"),"UTF-8");
//如果文件路径中包括反斜杠符号,在使用上述方法的时候需要在每个反斜杆之前再额外加一个反斜杆,如"C:\\myDictronary\\myFile.txt"
String file=in.nextline();
  • 当写入文件时,需要构造一个PrintWriter对象,并在构造器中提供文件名(如果文件不存在,则创建该文件),如下面所示
    PrintWriter out=new PrintWriter("myFile.txt","UTF-8")

5 数组

  • 数组声明:int[] a,这一步仅仅声明了一个数组变量·a,并没有真正创建数组,创建数组需要new运算符进行创建,如int[] a=new int[100],其次数组长度不要求一定是常量,如new int[number]也可以创建一个数组
  • 数组元素个数的获取,具体实现方式如array.length

5.1 for each循环

在java中,可以通过for each循环进行遍历,具体实现方式如:for(variable : collection) statement,举个例子如下面所示:

for(int element : array) 
	System.out.println(element);

5.2 数组初始化以及匿名数组

  • 初始化数组1:int[] smallPrimes={1,2,3,4,5};
  • 初始化数组2:smallPrimes=new int[] {1,3,5,7,9}

5.3 数组拷贝

  • 在java中的第一种拷贝方式是直接将一个数组变量拷贝个另外一个数组变量,这种方式将会使得两个变量同时使用一个数组,对其中任意一个的操作将会影响另外一个。如下面所示
int[] bigPrimes=smallPrimes;
bigPrimes[1]=99;

这样会使得samllPrimes[1]的值也等于99,其实相当于浅拷贝

  • 将数组的元素值拷贝到另外一个数组中,并且操作起来互相不影响,则可以使用Array类的copyOf()方法,具体实现方式如下:
int[] copied=Array.copyOf(smallPrimes,smallPrimes.length);

该方法中的第二个参数是新数组的元素个数,当元素的个数大于被拷贝数组元素个数时,则其余元素被赋予(整型元素是0,boolean元素是false);相反当元素个数小于被拷贝数组元素个数时,只拷贝最前面的数组元素

5.4 多维数组

  • 多维数组的声明,如double[][] array;初始化,如array=new double[rows][cols];此外,也可以按照如下方式进行初始化:
int[][] array={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}}
  • 多维数组元素的访问,如下面所示
for(double[] row:array)
	for(int b:row)
	System.out.println(b);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值