Java核心技术-Java的基本程序设计结构

1.一个简单的Java应用程序

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

这个程序虽然简单,但所有的Java应用程序都具有这种结构:

首先,Java区分大小写(如将main写成Main程序将无法运行)

下面逐行分析这段代码:

  public关键字称为访问修饰符,用于控制程序的其它部分对这段代码的访问级别。

  class关键字表明Java程序中的全部内容都包含在类中。

  类名紧跟在class关键字后面,名字必须以字母开头,后面可以跟字母和数字的任意组合,不能使用Java关键字

  static关键字修饰的方法称为类方法

  void关键字表示无返回类型

标准的命名规范——骆驼命名法

源代码的文件名必须与类名相同


2.注释

1.//   最常用的注释方式,其注释内容从//开始到本行结尾

2./*和*/ 用于长篇注释,将注释内容放在/*和*/中间

3./**和*/用来生成自动文档,将注释内容放在/**和*/中间


3.数据类型

Java是一种强类型语言,必须为每一个变量声明一种类型。

基本数据类型:4种整型、2种浮点型、1种字符型、一种布尔型

3.1 整型

从Java7开始,加上前缀0b或0B就可以写二进制数。

从Java7开始,还可以为数字字面量加下划线(1_000_000表示100万)

3.2 浮点类型

三种特殊的浮点数值:正无穷大(一个正整数除以0)、负无穷大、NaN(不是一个数字,如0/0或者负数的平方根)

不能用x==Double.NaN检测x是否等于Double.NaN,可以使用Double.isNaN(x)检测

2.0-1.1将打印出0.899999999999,如果数值在计算中不允许有任何误差,就应该用BigDecimal类

3.3 char类型

char类型的字面量要用单引号括起来

有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值

3.4 boolean类型

用来判定逻辑条件:true/false


4.变量

4.1 变量

变量名必须是一个以字母开头并由字母(包括”_“、"$")或数字构成的序列.

声明一个变量后,必须用赋值语句对变量进行显式的初始化。

变量的声明尽可能地靠近变量第一次使用的地方是一种良好的编程风格

4.2 常量

final关键字用于指示常量(习惯上常量名使用全大写)

static final设置一个类常量


5.运算符

strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果(有可能产生溢出)

5.1数学函数

floorMod方法是解决整数求余的问题

在Math类中,为了达到最快的性能,所有方法都使用计算机浮点单元中的例程,如果得到一个完全可预测的结果比运算速度更重要的话,应该使用StrictMath类。

5.2 数值类型之间的转换

转换顺序:double->float->long->int

int转float失效原因(https://blog.csdn.net/m1n_love/article/details/55224990)

5.3 强制类型转换

对浮点数进行舍入运算:Math.round

5.4 结合赋值和运算符

x+=4;

5.5 自增与自减运算符

5.6 关系和boolean运算符

==、!=、&&、||(短路)、x<y?x:y;

5.7 位运算符

&、|(不短路)、^、~、>>、<<(移位操作要进行模32操作或64)

5.8 括号与运算符级别

5.9 枚举类型

enum Size{ SMALL,MEDIUM,LARGE,EXTRA_LARGE}

Size s=Size.MEDIUM


6 字符串

Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,叫做String

6.1 子串

String类的substring方法

6.2 拼接

1.使用+号连接:当一个字符串与一个非字符串拼接时,后者会被转换成字符串(任何一个Java对象都能被转换成字符串)

2.如果需要把多个字符串放在一起,用一个定界符分隔,可以使用静态join方法:String.join("/","S","M","L","XL");

6.3 不可变字符串

String类没有提供修改字符串的方法,因此Java文档中将String类对象称为不可变字符串。

不可变字符串有一个优点:编译器可以让字符串共享

Java设计者认为共享带来的高效率远远胜过于提取、拼接字符串所带来的低效率

6.4 检测字符串是否相等

使用equals而不要使用==

如果虚拟机始终将相同的字符串共享,就可以使用==运算符检测是否相等。但实际上只有字符串常量是共享的,而+或substring等操作产生的结果并不是共享的,当使用==运算符测试字符串相等时,从表面上看,这种bug很像随机产生的间歇性错误。

6.5 空串与null串

if(str != null && str.length != 0) 首先检查str不为null

6.6 码点与代码单元

不要使用char数据类型(代码单元)来保存从字符串中取出的码点

6.7 构建字符串

构建字符串时如果采用字符串连接的方式,每次连接字符串都会构建一个新的String对象,既耗时,又浪费空间。使用StringBuilder类可以避免这个问题发生(单线程)。

StringBuffer类较StringBuilder类效率稍低,但允许在多线程中使用。


7 输入输出

7.1 读取输入

输入可见:Scanner in=new Scanner(System.in);

输入不可见:Console cons=System.console();

      String username=cons.readLine("User name:");

      char[] passwd=cons.readPassword("Password:");——每次只能读取一行输入,而没有能读取一个单词或一个数值的方法

7.2 格式化输出

System.printf("Hello,%s. Next year,you‘ll be %d",name,age);

每一个以%开始的格式说明符都用相应的参数替换

String date=String.format("%1$s %2$tB %2$te,%2$tY","Due date:",new Date());

格式说明符的语法图:

7.3 文件输入与输出

如果文件名中包含反斜杠符号,就要记住在每个反斜杠前加一个额外的反斜杠:"c:\\mydirectory\\myfile.txt"

查找文件路径:String dir=System.getProperty("user.dir");


8 控制流程

Java使用条件语句和循环结构确定控制流程

8.1 块作用域

块是指由一对大括号括起来的若干条简单的Java语句,块确定了变量的作用域。

8.2 条件语句

if/else

8.3 循环语句

while/do-while

8.4 确定循环

在循环中,检测两个浮点数是否相等需要格外小心:

for(double x=0;x!=10;x+=0.1) 因为0.1无法精确的使用二进制表示,所以循环可能永远无法结束

8.5 多重选择

switch

8.6 中断控制流程语句

Java中增加了一条带标签的break,用于跳出多重循环。

对于任何使用break语句的代码都需要检测循环是正常结束还是由break跳出。


9 大数值

大数值可以处理包含任意长度数字序列的数值

BigInteger(任意精度整数)和BigDecimal(任意精度浮点数)

BIgInteger lotterOdds=lotterOdds.multiply(BigInteger.valueOf(n-i+1).divide(BigInteger.valueOf(i));


10 数组

数组是一种数据结构,用来存储同一类型值得集合。

数字数组所有元素初始化为0;Boolean数组元素会初始化为false;对象数组得元素会初始化为null。

获得数组中的元素个数:array.length

一旦创建了数组,就不能改变它的大小。如果经常需要在运行中扩展数组的大小,就应该使用数组列表(ArrayList)。

要打印数组可以使用Arrays.toString(a);

10.1 增强for循环

for each循环可以用来依次处理数组中的每个元素(无需使用下标)

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

数组的初始化:

int[] smallPrimes={2,3,5,6,11};

使用匿名数组可以在不创建新变量的情况下重新初始化一个数组。

smallPrimes=new int[]{17,18,23,29,31};

10.3 数组拷贝

一个数组变量拷贝给另一个数组变量:这时两个变量将引用同一个数组。

int[] luckyNumbers=smallPrimes;

一个数组的值拷贝给另一个数组:使用Arrays.copyOf方法:

int[] copiedLuckyNumbers=Arrays.copyOf(luckyNumbers,2*luckyNumbers.length);

10.4 命令行参数

10.5 数组排序

对数值型数组进行排序可以使用Arrays类中的sort方法,这个方法使用了优化的快速排序算法。

10.6 二维数组

多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排列形式。

遍历二维数组:

for(int i=0;i<balances.length;i++)

{

  for(int j=0;j<balances[i].length;j++)

  { ...   }

}

for each循环语句不能自动处理二维数组的每一个元素,需要使用两个嵌套循环

要想快速打印一个二维数组的数据元素列表,可以调用:Arrays.deepToString(a));

10.6 不规则数组

Java实际上没有多维数组,只有一维数组,多维数组被解释为“数组的数组”

原文地址:https://www.cnblogs.com/dyj-blog/p/8966472.html

时间: 2024-10-10 07:38:59

Java核心技术-Java的基本程序设计结构的相关文章

java核心技术学习笔记之三程序设计结构

一 基本数据结构 必须包括在类中 必须具备 public static main方法 大小写敏感 二.数据类型 四种整数类型: Int 4字节 short 2字节 long8字节 byte1字节 二种浮点型 float 4字节 douleble 8字节 char类型:boolean类型 常量使用final定义 类常量使用static final定义 三.操作符号 X!=0 &&1/x>x+y   //如果X=0,不进行&&后面的计算避免x=0的1/x操作 数学操作符号

java核心技术学习笔记之一程序设计概述

Java 核心技术之一程序设计概述 一.   Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向对象的语言: 网络技能:Socket,FTP,Http,URL编程简单: 健壮性:避免指针错误使用: 安全性:构建防病毒防篡改系统: 体系结构中立:字节码: 可移植性: 解释性:可以解释任何移植了的字节码: 高性能: 多线程 动态性: 二.   Internet 和 Java Applet 在网页中

java核心技术学习笔记之一程序设计环境

一术语 JDK:Java Delelpment Jit JRE:Java Runtime Environment 二.安装jdk1.8.0_25 设置环境变量(建议直接安装在C盘下),使用:隔开 C: \Java\jre1.8.0_25\bin; 三.解压源码文件方法 进入C: \Java\jre1.8.0_25 建立src子目录 mkdir src cdsrc 解压文件 Jar xvf ..\src.zip 一.   使用命令行工具 Java HelloWorld.java   带java结尾

Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)

3.3 数据类型 Java是强类型语言,必须为每一个变量声明一种类型. 3.3.1 整型 Java 提供四种整型 int 4字节 short 2字节 long 8字节 byte 1字节 长整型(long)数值有一个后缀L(例如40000000000L),十六进制数值有一个前缀0x(例如0xCAFE),八进制数值有一个前缀0(例如010). 3.3.2 浮点型 Java提供两种浮点类型 float 4字节 double 8字节 float类型的数值有一个后缀F(例如3.42F),没有后缀F的浮点数

Java核心技术第三章----Java的基本程序设计结构重难点总结

最近在看Java核心技术这本书,这里对第三章个人认为的重难点做一个总结.方便以后回顾,个人能力有限,本人菜鸟,大神勿喷,请大家多多指教. 一.位运算符 指定 A = 66(0100 0010); B = 22 (0001 0110)(这里为了简化说明支取一个字节即8位来运算) 位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能.如果要开发高效率程序,位运算符是必不可少的.位运算符用来对二进制位进行操作,包括:按位与(&).按位或(|).按位异或(^).按位取反(~).按

201771010142 张燕 Java的基本程序设计结构第二周学习总结

第三章 Java的基本程序设计结构 第一部分 理论知识学习部分 一 基本知识: 1.标识符:由字母.下划线,美元符号和数字组成,第一个符号不能为数字,可以用作类名.变量名.方法名.数组名和文件名等. 2.关键字:Java语言中已经被赋予特定意义的一些单词,关键字不能作为变量名. 3.注释:①//②/*和/*③/**开始,*/结束 二 数据类型: 整数类型(int. short. long. byte)浮点类型(float. double )字符类型(char)浮点类型(float double)

java的基本程序设计结构

java的基本程序设计结构 这一系列Java基础的博客,均为扎实自己的java基础,一为面试.二为走得更远 数据类型 这个很基础,面试真的被问到过,虽然不影响面试结果,但是还是记一下,哈哈哈哈哈. 在java中,一共有八种基本类型,其中有4中整形,2中浮点类型,1个字符类型,1个表示真值的类型 整型 类型 存储需求 取值范围 byte 1个字节 -128 —— 127 short 2个字节 -32768 —— 92767 int 4个字节 约莫着 -21亿 —— 21亿 long 8个字节 这个

《java 核心技术一》第二章java程序设计环境

java术语 术语名 缩写 解释 Java Development Kit JDK 编写程序的程序员使用的软件 Java Runtime Enviroment JRE 运行java程序的用户使用的软件 Server JRE   在服务器上运行java程序的软件 Standard Edition   用于桌面或简单服务器应用的java平台 Enterprised Edition   用于复杂服务器应用的java平台 Micro Edition   用于手机或其他小型设备的java平台 Java F

[基础] Java目录(摘自Java核心技术·卷1 基础知识)

Java核心技术·卷1 基础知识(原书第9版) 第1章 Java程序设计概述 1.1 Java程序设计平台 1.2 Java"白皮书"的关键术语 1.2.1 简单性 1.2.2 面向对象 1.2.3 网络技能 1.2.4 健壮性 1.2.5 安全性 1.2.6 体系结构中立 1.2.7 可移植性 1.2.8 解释型 1.2.9 高性能 1.2.10 多线程 1.2.11 动态性 1.3 Java applet与Internet 1.4 Java发展简史 1.5 关于Java的常见误解