《Java核心技术 卷1》日常笔记,第3章 Java的基本程序设计结构

这里先说明一下为什么会从第三章开始做笔记,前两章节,第一章是了解Java的特性,第二章是环境的搭建。个人认为一款Java程序的主导是如何进行Java的编写,也是从第3章开始记笔记的原因。如果对第一章比较感兴趣的话,可以深入看一下Java的发展史,第二章的话,就是如何进行Java环境的配置以及简单的hello world,告诉大家一些类加载的概念。Java类和class的区别。

3.1 -> 一个简单的Java应用程序

下面看一个最简单的Java应用程序,它只是发送一条消息到控制台窗口中:

public class FirstSample
{
	public static void main(String[] args)
	{
		System.out.println("We will not use 'Hello World!'");
	}
}

这个程序虽然简单,但所有的Java应用程序都具有这样的结构,还是值得花一些时间来研究。首先,Java区分大小写。如果出现了大小写拼写错误(例如,将main拼写成Main),程序将无法运行。
下面逐行查看一下这段源代码。关键字 public 称为访问修饰符(access modifier),这些修饰符用于控制程序的其他部分对这段代码的访问级别。随后是class关键字,表明Java程序的全部内容都包含在类中,class关键字后面所紧跟着的是类名,需要注意的是,类名与所创建的文件名必须保持一致,当然如果只是代码的存储无所谓。至于类名的命名规范,名字必须以字母开头,后面可以字母和数字的任意组合。长度上是没有限制,但是不能是Java的保留字。
随后是main方法,这个main方法是固定写法,如果需要run一个程序,main方法是唯一入口,代码执行首先会进入main方法。 这里的main方法,换一个词就是函数,两者是一个意思。
需要注意的是,代码块都是使用一对{} 进行包含起来的,{}中的代码称之为代码块。
接下来看一下打印语句,也就是 System.out.println,一对{}代表着开始与结束,在这里System.out是一个对象,我们使用了这个对象并调用了它的println方法。注意,点号(.) 用于调用方法。Java使用通用语法是:object.method(parameters)
这等价于函数调用。
在这个示例中,调用了println方法并传递给它一个字符串参数。这个方法将传递给它的字符串参数显示在控制器上。然后,终止这个输出行,使得每次调用println都会在新的一行上显示输出。
与其他程序设计语言的函数一样,在Java的方法中,可以没有参数,也可以有一个或者多个参数(有的程序员把参数叫做实参)。对于一个方法,即使没有参数也需要使用空阔好。例如,不带参数的println方法打印一个空行,使用下面的语句来调用:

System.out.println();
注释:System.out还有一个print方法,它在输出之后不换行。

3.2 -> 注释

与大多数程序设计语言一样,Java中的注释也不会出现在可执行的程序中,因此,可以在源程序根据需要添加任意多的注释,而不必担心可执行代码会膨胀。在Java中,有3种标记注释的方式,最常用的//,其注释内容从//开始到本行结尾:

//我是注释

当需要长篇注释的时候,既可以在每行添加注释前添加//,也可以使用 /* 和 / 将一段比较长的注释括起来。
最后第3种注释,可以用来自动地生成文档。这种注释以/
* 开始,以*/结束。示例:

/**
这是我第一个文档注释
@auther wang
@version 0.0.1
*/

进行相关代码文档般的注释。

3.3 -> 数据类型

Java是一种强类型语言。这就意味着必须为每一个变量的声明制定出它的类型。一共有8种基本类型,其中4种整形,2种浮点类型、一种用于表示Unicode编码的字符串单元字符类型char和一种用于表示真值的boolean类型。

这里只做简单的介绍,想知道详细的可以自己去百度一下= =

3.3.1 整型

整型分为 int、short、long、byte,分别是 4字节,2字节,8字节,1字节,在通常情况下,int是最经常使用的一种整形类型。
长整型数值有一个后缀L或者l,一般使用L,因为小写l与1在IDE中会有些类似,不容易分辨。十六进制数值有一个0x或0X。八进制有一个前缀0,例如,010对应八进制中的8.很显然,八进制表示法比较容易混淆,所以建议最好不要使用八进制常数。

3.3.2 浮点型

flot,double。这两个类型最明显的区别就是精度不同。float为4字节,double为8字节。
double表示这种类型的数值精度是float类型的两倍,也称为双精度浮点型。绝大部分应用程序都采用double类型,因为在很多情况下,float类型的精度很难满足需求。 float类型有一个后缀,F或f。

3.3.3 char 类型

char类型原本用于表示单个字符。不过,现在情况有所变化。如今,Unicode字符可以用一个char值描述,也有可以用2个char值才可以描述的Unicode字符。想具体了解哪些需要2个可以自行了解。
char类型的字符需要用单引号括起来 ‘A’ 类似于这样。

3.3.4boolean 类型

boolean类型,以下称为布尔,布尔类型有两个值“false和true,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换

3.4 变量

在Java中每一个变量都有一个类型(type)/在声明变量时,变量的类型位于变量名之前,这里可以给出几个例子:
int a;
float b;
long c;
可以看到,每一个声明后面都使用了封号结束。由于声明是一条完整的Java语句,所以必须要用封号进行结束。
变量名的命名规范:可以使用字母/$/_ 进行开头,不可以使用数字开头。

3.4.1 变量初始化

声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不要使用未初始化的变量。例如,Java编译器认为下面的语句是错误的:

int vacationDays;
System.out.println(vacationDays);

要想对一个已经声明过的变量进行赋值,就需要将变量放在(=)等号左侧,相应取值的Java表达式放在等号的右侧。需要注意的是,右侧的结果值必须与变量类型一致。部分可以使用强制类型转换,这一点经过大概的了解,后面可以了解到。
在Java中,可以将声明放在代码中任何地方,但是尽可能地应该靠近变量第一次使用的地方,这是一种良好的程序编写风格。

3.4.2 常量

在Java中,需要使用final关键字来指定常量。例如:

final int MAX_NUMBER = 10;

关键字final表示这个变量智能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上,常量名称使用全部大写来与变量进行区分。
在Java中,经常希望有的常量可以在类中的多个地方使用,通常这些常量被称为类常量。声明类常量需要在常量前加上关键字 static final。
下面是定义类常量的示例:

public Class Constants2{
	public static final int MAX_NUMBER = 10;
	public static void main(String[] args){
		//程序代码块
	}
}

需要注意的是,类常量需要定义在main方法的外部。

const是Java保留的关键字,但是目前没有被使用。在Java中,必须使用final定义常量。

3.5 运算符

在Java中,使用算术运算符+、-、*、/表示,加减乘除运算。当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。整数的求余操作(有时也被称为取模)用%表示,举例:15/2等于7,
15%2等于1,15.0/2等于7.5。

3.5.1 数学函数与常量

在Java中有一些封装好的数学运算操作函数。在编写不同类别的程序时,可能需要的函数也不同。
要想计算一个数值的平方根,可以使用sqrt方法:

double x = 4;
double y = Math.sqrt(x);
System.out.println(y); //输出结果 2.0

Math这个类提供了一些很方便的数学运算:
一些常用的三角函数:Math.sin、Math.cos、Math.tan、Math.atan、Math.atan2。
更多方法感兴趣的可以自己去了解一下。

3.5.2 数值类型之间的转换

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

int n = 123456789;
float f = n; // f is 1.23456792E8

当使用上面两个数值进行二次元操作,例如n是整数,f是浮点数,先将两个操作数转成同一个类型,然后再进行计算。 部分计算结果可以进行隐式转换。如果不能隐式转换的两个数值就需要手动进行强制类型转换。

3.5.3 强制类型转换

例如:

double x = 9.997;
int nx = (int) x;

这样,nx的值将9.997强制类型转换通过截断小数部分将浮点型转为整型。
如果想对浮点数进行舍入运算,达到更接近整型数值的目的,可以使用Math.round() 函数。

double x = 9.997;
int nx = (int) Math.round(x); //nx is 10

这样相对于9,10更接近9.997也就是x的值。当调用round的时候,仍然需要使用强制类型转换。其原因是round方法返回的是long类型,由于存在信息丢失的可能性,所以只能使用显示的强制类型转换才能够将long类型转换成int类型。

如果试图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完成不同的值。例如,(byte)300的实际值为44。

3.5.4 赋值和运算符

可以在赋值使用二元运算符,这是一种很方便的简写。例如,
x += 4 等价于 x = x + 4 相同的道理 /=、*=、-=。

3.5.5 自增和自减运算符

知道了赋值运算符的方便,也提供了一个自增自减的方便写法。比如当需要计算总数的时候,使用for循环,不了解的可以自行百度,也可以等我的笔记记录到后面 = =
循环一次 + 1,可以使用 x += 1;现在出现了更方便的写法.x++ / ++x
这两者的区别是什么呢,如果单独这样两个结果是一样的,但是如果加上变量,形成一个赋值的例子就不一样了:

int x = 1;
int y = ++x; // y is 2
x = 1; //这里进行一个初始化
int z = x++; // z is 1

这是为什么呢,当++在变量前时,代表先进行运算,也就是自身先加1再进行一个赋值的操作,++在变量后时,是先赋值,再进行一个自增的操作。但是最终x的值都会进行一个运算。
–x 和 x-- 也是同样的道理。

3.5.6 关系和boolean 运算符

在Java中,要检测相等性,可以使用两个等号==。例如

3 == 7

结果肯定是不等于,不等于的话,会用false表示。
另外也可以使用 != 来检测不等性。例如

3 != 7

结果肯定是正确的,这两个结果符合不等于的条件,则会使用true表示。
另外还有> 大于,<小于,>= 大于等于,<= 小于等于 比较运算符。
另外还有 “&&” 和 “||” ,一次表示 “与” 和 “或” 的意思。举例:

x + x > y && x - x == 0

意思就是,x+x的和大于y值的同时还要满足x - x 等于0才表示这段表达式是正确的才会给你true,否则是false,“||” 则是表示,x+x的和大于y 或者 x- x 等于0,满足其中一个条件,就给告知你,这个表达式是正确的,就会给你true。

如果需要验证字符串是否相等,不能够使用 两个等号,需要equals 方法检测两个字符串表达式:

s.equals(t)

如果字符串s和字符串t相等,则返回true,否则,则返回false。需要注意,s与t可以是字符串,也可以是字符串字变量。下列表达式是合法的:

"Hello".equals(greeting)

以上就是Java一些基本的知识,更加详细的还在书里,我主要捡的经常使用和必须了解的进行一些记录,想知道更多的可以去看一下《Java核心技术 卷1》 基础知识进行研究学习,我也是进行一个普通的记录作为一个笔记以及和达到按照作者出书同步思考的目的,如果有什么不对的地方,希望大佬勿喷= =,给我点面子哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值