Java的基本程序设计结构
  gP51aCLgasca 2023年11月02日 63 0


前言

笔者决定画一些时间写用CPP的思想去学JAVA,方便对Cpper能够快速转Javaer,也是为了自己的学习与巩固,此处为初稿之一。

一个简单的Java应用程序

  • java
public class FirstSample
{
	public static void main(String[] args)
	{
		System.out.println("Hello world'");
	}
}
  • cpp
#include <iostream>
usng namespace std;

int main()
{
	cout<<"Hello world"<<endl;
	return 0;
}

异同点

  • JAVA的main方法在Java1.4及以后的版本强制必须是public,而CPP中main为函数,无访问控制修饰。
  • JAVA的main方法必须是静态的,而CPP中的main一定是非静态方法。

注释

  • JAVA存在三种注释方式:
/**
*
* this is document 
*/

数据类型

整型:byte(1)、short(2)、int(4)、long(8)
浮点型:float(4)、double(8)
Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY、Double.NaN。
字符型:char
布尔型:boolean

注:与C/C++不同的是,Java并不区分变量的声明和定义。

在Java中,利用final指示常量。

数值类型转换的精度丢失问题:

Java的基本程序设计结构_Java


实线表示无信息丢失的转换,虚线表示可能有精度丢失的转换。

运算符

+、-、*、/
++、–
<、>、<=、>=
&&、||
&、|、^、~

注意:

  • Java的字符串不可修改,C++的字符串时可以修改的。
  • Java检测字符串使用equals方法检测两个字符串是否相等,使用==运算符只能够确定两个字符串是否存放在同一个位置上,而C++重载了==运算符可以检测字符串内容的相等性。

码点和代码单元

在 Java 中,代码点和代码单元是两个非常重要的概念。它们是 Unicode 字符存储和操作的基本单元,也是 Java 语言中使用的基本单元。
码点(code point)是指与一个编码表中的某个字符对应的代码值。
在基本多语言平面中,每个字符用16位表示,通常称为代码单元(code unit)。

字符串

String的常见API

  • java.lang.String
  • char charAt(int index),返回给定位置的代码单元。
  • int codePointAt(int index),返回从给定位置开始的码点。
  • int offsetByCodePoints(int startIndex,int cpCount),返回去从startInde码点开始,cpCount个码点后的码点索引。
  • int compareTo(String other),按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之后,返回一个正数;如果两个字符串相等,返回0。
  • IntStream cidePoints(),将这个字符串的码点作为一个流返回。调用toArray将它们放在一个数组中。
  • new String(int[] codePoints, int offset, int count),用数组中从offset开始的count个码点构造一个字符串。
  • boolen empty()
  • boolean blank(),如果字符串为空或者由空格组成,返回true。
  • boolean equals(Object other),如果字符串与other相等,返回true。
  • boolean equalsIgnoreCase(String other),如果字符串与other相等(忽略大小写),返回true。
  • boolean startsWith(String prefix)
  • boolean endsWith(String sufix),如果字符串以prefix开头或以suffix或结尾,则返回true。
  • int indexOf(String str)
  • int indexOf(String str, int fromIndex)
  • int indexOf(int cp)
  • int indexOf(int cp, int fromindex),返回与字符串str或码点cp匹配的第一个子串的开始位置。从索引0或fromIndex开始匹配。如果在原始字符串中不存在str,则返回-1。
  • int lastIndexOf(String str)
  • int lastIndexOf(String str, int fromIndex)
  • int lastIndexOf(int cp)
  • int lastIndexOf(int cp, int fromIndex),返回与字符串str或码点cp匹配的最后一个子串的开始位置。从原始字符串末尾或fromIndex开始匹配。
  • int length(),返回字符串代码单元的个数。
  • int codePointCount(int startIndex, int endIndex),返回startIndex和endIndex-1之间的码点个数。
  • String replace(CharSequence oldString, CharSequence newString)
  • String substring(int beginIndex)
  • String substring(int beginIndex, int endIndex)
  • String toLowerCase()
  • String toUpperCase()
  • String trim()
  • String strip(),返回一个新字符串。这个字符串将删除原始字符串头部和尾部小于等于U+0020de的字符(trim)或空格(strip)。
  • String join(CharSequence delimiter, CharSequence... elements),返回一个新字符串,用给定的定界符连接所有元素。
  • String repeat(int count),返回一个字符串,将当前字符串重复count次。

构建字符串

用许多小段的字符串来构建一个字符串,可以按照下列步骤进行。

// 构建一个空的字符串构建器
StringBuilder builder = new StringBuilder();
// 每次添加使用append
builder.append(ch);
builder.append(str);
// 字符串构建完成调用toString方法,可以得到String对象
String completeString = builder.toString();
  • java.lang.StringBuilder
  • StringBuilder(),构造一个空的字符串构建器。
  • int length(),返回构建器或缓冲器中的代码单元数量。
  • StringBuilder append(String str),追加一个字符串并返回this。
  • StringBuilder append(char c),追加一个代码单元并返回this。
  • StringBuilder appendCodePoint(int cp),追加一个码点,并将其转换为一个或两个代码单并返回this。
  • void setCharAt(int i, char c),将第i个代码单元设置为c。
  • StingBuilder insert(int offset, Strting str),在offset位置插入一个字符串并返回this。
  • StringBuilder insert(int offset, char c),在offset位置产生插入一个代码单元并返回this。
  • StringBuilder delete(int startIndex, int endIndex),删除偏移量从startIndex到endIndex-1的代码单元并返回this。
  • String toString(),返回一个与构建器或缓冲器内容相同的字符串。

输入与输出

  • java.util.Scanner
  • Scanner(InputStream in),用给定的输入流创建一个Scanner对象。
  • String nextLine(),读取输入的下一行内容。
  • String next(),读取输入的下一个单词(以空格作为分隔符)。
  • int nextInt()
  • double nextDouble(),读取并转换下一个表示整数或浮点数的字符序列。
  • boolean hasNext(),检测输入中是否还有其他单词。
  • boolean hasNextInt()
  • boolean hasNextDouble(),检测是否还有下一个表示整数或浮点数的字符序列。

流程控制

带标签的break

label:
{
	...
	if (condition) break label;	// exist block
	...
}
// jumps here when the break statement executes

大数

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal。
这两个类可以处理包含任意长度数字序列的数值。
BigInteger类实现任意精度的整数计算,BigDecimal实现任意精度的浮点数运算。

// 构造方法
BigInteger a = BigInteger.valueOf(100);
BigInteger reallyBig = new BigInteger("22222232423r523523523523532523523532325235235");
  • BigInteger.ZERO
  • BigInteger.ONE
  • BigInteger.TEN
  • BigInteger.TWO

大数运算不能使用算术运算符,而需要使用大数类中的add和multiply方法。

  • java.math.BigInteger
  • java.math.BigDecimal

数组

int[] a = new int[100];
int[] smallPries = {2, 3, 5, 7, 9, 11};
int[] b;
b = new int[] {17, 19, 21, 23};	// 匿名数组

注:Java中允许有长度为0的数组,如果结果为空,这样一个长度为0的数值就很有用,长度为0的数组与null并不相同,

  • java.utils.Arrays

后记

快速学习JAVA的基础程序设计,之后还会补充与修改。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
gP51aCLgasca