JAVA学习笔记——基本语法:基础知识1

JAVA程序的基本结构

public class FirstSample
{
	public static void main(String[] args)
	{
		System.out.println("Hello, JAVA!");
	}
}
  • Java 入口程序规定的方法必须是静态方法
  • 方法名必须为 main,括号内的参数必须是String数组
  • main 方法退出时,若程序正常退出,则退出代码为 0;若希望返回其他代码,则需使用 System.exit(int status)方法。

注释方法

// 单行注释

/*
	多行注释
*/

/**
 * 另一种多行注释
 * 这种注释方法可用于自动生成文档
 */

基本数据类型

整型

类型存储需求取值范围
int4字节-2 147 483 648 ~ 2 147 483 647
(正好超过 20 亿)
short2字节-32 768 ~ 32 767
long8字节-9 223 372 036 854 775 808
~ 9 223 372 036 854 775 807
byte1字节-128 ~ 127
  • 整型不存在无符号数
  • 数字前加上"0x"或"0X"(如0xCAFE),则表示十六进制数;同理,数字前加上"0b"或"0B",则表示二进制数
  • 较长数字之间可用"_"连接,便于阅读(如 1_000_000)

浮点型

类型存储需求取值范围
float4字节大约 ± 3.402 823 47E+38F
(有效位数为 6 ~ 7 位)
double8字节大约 ± 1.797 693 134 862 315 70E+308
(有效位数为 15 位)
  • 当使用十六进制科学计数法表示时,使用 “p” 替代十进制下 “e” 的位置,此时"p"表示指数,基数是 2 (如 0.125 = 2 − 3 0.125 = 2^{-3} 0.125=23,十六进制表示为 0x1.0p-3)
  • 常量 Double.NaN:Not a Number,使用 Double.isNaN() 判断
  • 常量 Double.POSITIVE_INFINITY 和 Double.NEGTIVE_INFINITY:正负无穷大,使用 Double.isInfinite() 判断

字符(char)型和 Unicode

特殊转义字符

转义字符名称Unicode 值
\b退格\u0008
\t制表\u0009
\n换行\u000a
\r回车\u000d
\"双引号\u0022
\’单引号\u0027
\\反斜杠\u005c
  • char 类型用单引号表示,如 ‘A’
  • \uxxxx 可以用十六进制表示 Unicode 字符,xxxx 为 4 个十六进制数
  • 在 Java 中,char 类型描述了 UTF-16 编码中的一个代码单元

注意:在用"\uxxxx"表示字符时,转义序列会先解析,再运行程序,即使用时不受引号限制。例如:public static void main(String\u005B\ u00SD args)也是正确的,其中\u005B\u005D分别表示"[""]",转义后为public static void main(String[] args)

布尔(boolean)型

  • 用于判断逻辑条件
  • 取值有 truefalse

变量

  • 变量名字母开头,可使用数字,大小写敏感
  • 变量名应避免使用 Java 关键字
  • 可以先定义变量,然后再初始化;或者在定义时直接初始化变量;不可使用未初始化的变量
  • 使用 final 关键字定义常量,且需在定义时初始化
// 变量定义
int days;
double salary;
boolean done;

// 变量初始化
double distance;
distance = 5.1729;

int vacationDays = 12;

// 定义常量
final double pi = 3.14;

运算符

基本运算:加(+)、减(-)、乘(×)、除(/)、取余(%),当除数为 0,得到无穷大或 NaN。

数学函数与常量

  • Math.sqrt(x):开方, x \sqrt x x
  • Math.pow(x, a):求幂, x a x^a xa
  • Math.round(x, a):四舍五入,保留 a 位小数,返回 long 类型
  • Math.sin(x):取正弦, s i n ( x ) sin(x) sin(x)
  • Math.cos(x):取余弦, c o s ( x ) cos(x) cos(x)
  • Math.tan(x):取正切, t a n ( x ) tan(x) tan(x)
  • Math.atan(y/x):取反正切, a r c t a n ( y / x ) arctan(y/x) arctan(y/x)
  • Math.atan2(y, x):取反正切(可确定象限),值域为 [ − π , π ] [-\pi, \pi] [π,π]
  • Math.exp(x):e 为基数求幂, e x e^x ex
  • Math.log(x):自然对数, l n ( x ) ln(x) ln(x)
  • Math.log10(x):以 10 为底的对数, l o g 10 ( x ) log_{10}(x) log10(x)
  • Math.PI:圆周率常量, π \pi π
  • Math.E:自然常数, e e e

类型转换

图1 数值类型之间的合法转换

图1 数值类型之间的合法转换
  • 有时也使用强制类型转换,但会丢失一部分精度
  • 不可使用 boolean 和其他数值类型强制转换
// 强制类型转换
double x = 7.996;
int nx = (int) x;	// nx = 7

赋值与自增减

运算符名称功能
=赋值将值赋给变量名
int x = 1;
+=
-=
*=
/=
%=
结合赋值以 += 为例
a += b;
等价于
a = a + b;
++
- -
自增/自减以 ++ 为例
a = i++;
等价于
a = i; i = i + 1;
若是 ++i,则 i 先加 1,后赋值

关系和 boolean 运算符

运算符功能
==
!=
判断是否等值
>
<
>=
<=
判断大小
&&
||
!


条件 ? 表达式1 : 表达式2三元操作符
条件为 true,执行表达式1
条件为 false,执行表达式2
  • 逻辑运算符按照“短路”求值

位运算

运算符名称功能
&按位与
|按位或
^异或按位异或
~所有位取反
<<左移各二进位全部左移若干位,高位丢弃,低位补0
>>右移各二进位全部右移若干位,低位丢弃,高位补符号位
>>>逻辑右移各二进位全部右移若干位,低位丢弃,高位补0

括号与运算符级别

运算符结合性
[] . () (方法调用)从左向右
! ~ ++ − − -- +(一元操作符) -(一元操作符)
(强制类型转换) new
从右向左
* / %从左向右
+ -从左向右
<< >> >>>从左向右
< > <= >= instanceof从左向右
== !=从左向右
&从左向右
^从左向右
|从左向右
&&从左向右
||从左向右
?:从右向左
= += -= *= /= %=
&= |= ^= <<= >>= >>>=
从右向左

字符串

字符串类型String是引用类型,String是 Java 的一个预定义类,可存储 0 个到任意个字符。

不可变性

String 类没有提供用于修改字符串的方法。如果需要修改字符串内容,则需先取出子串,然后拼接上所需内容,如下例所示。

String greeting = "Hello";
greeting = greeting.substring(0, 3) + "p!";	// greeting 变为 Help!

可以想象将各种字符串存放在公共的存储池中。字符串变量指向存储池中相应的位置。如果复制一个字符串变量, 原始字符串与复制的字符串共享相同的字符。

空串与 null 串

空串 “” 是一个 Java 对象, 有自己的串长度( 0 ) 和内容(空)。String 变量还可以存放一个特殊的值,名为 null,这表示目前没有任何对象与该变量关联。

// 判别空串
if (str.length() == 0)
if (str.equals(""))

// 判别不是 null 串
if (str != null && str.length() != 0)

常用方法

  • String.length():返回字符串长度
  • String.toLowerCase()String.toUpperCase():返回一个新字符串。 这个字符串将原始字符串中的大写字母改为小写,或者将原始字符串中的所有小写字母改成了大写字母。
  • String.trim():返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。
  • String.substring(int beginlndex )String.substring(int beginlndex, int endlndex ):返回一个新字符串。这个字符串包含原始字符串中从 beginlndex 到串尾或 endlndex-1 的所有代码单元。
  • String.join(CharSequence delimiter, CharSequence ... elements):返回一个新字符串, 用给定的定界符连接所有元素。
  • String.equals(0bject other):如果字符串与 other 相等, 返回 true。
  • String.equalsIgnoreCase((String other):如果字符串与 other 相等 ( 忽略大小写,) 返回 true。
  • String.compareTo(String other):按照字典顺序,如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之后,返回一个正数;如果两个字符串相等,返回 0。
  • String.replace( CharSequence oldString,CharSequence newString):返回一个新字符串。这个字符串用 newString 代替原始字符串中所有的 oldString。可以用 String 或 StringBuilder 对象作为 CharSequence 参数。
  • String.startsWith(String prefix)String.endsWith(String suffix):如果字符串以 suffix 开头或结尾, 则返回 true。
  • String.indexOf(String str)String.indexOf(String str, int fromlndex )String.indexOf(int cp)String.indexOf(int cp, int fromlndex ):返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或 fromlndex 开始计算。如果在原始串中不存在 str,返回 -1。
  • String.1astIndexOf(String str)String1astIndexOf(String str, int fromlndex)String.lastindexOf(int cp)String.1astindexOf(int cp, int fromlndex):返回与字符串 str 或代码点 cp 匹配的最后一个子串的开始位置。这个位置从原始串尾端或 fromlndex 开始计算。
  • String.charAt(n):返回位置 n 的字符, n = 1 , 2 , . . . , l e n g t h − 1 n = 1,2,...,length-1 n=1,2,...,length1
  • String.codePointAt(int Index):返回从给定位置开始的码点。
  • String.offsetByCodePoints(int startlndex, int cpCount):返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。
  • String.codePoints():将这个字符串的码点作为一个流返回。调用 toArray 将它们放在一个数组中。
  • new String(int[] codePoints, int offset, int count):用数组中从 offset 开始的 count 个码点构造一个字符串。
  • String.codePointCount(int startlndex , int endlndex):返回startlndex 和 endludex-l之间的代码点数量。没有配成对的代用字符将计入代码点。

字符串构造器(StringBuilder)

有些时候, 需要由较短的字符串构建字符串, 例如, 按键或来自文件中的单词。采用字符串连接的方式达到此目的效率比较低。每次连接字符串, 都会构建一个新的 String 对象,既耗时,又浪费空间。使用 StringBuilder 类就可以避免这个问题的发生。

// 构造对象
StringBuilder builder = new StringBuilderO;
// 在末尾拼接一个字符
builder.append(ch);
// 在末尾拼接一个字符串
bui1der.append(str);
// 生成字符串
String completedString = builder.toStringO;

常用方法

  • new StringBuilder():构造一个空的字符串构建器。
  • StringBuilder.length():返回构建器或缓冲器中的代码单元数量。
  • StringBuilder.append(char c)StringBuilder.append(String str)StringBuilder.appendCodePoint(int cp):追加一个代码单元字符串代码点,并将其转换为一个或两个代码单元并返回 this。
  • StringBuilder.setCharAt(int i ,char c):将第 i 个代码单元设置为 c。
  • StringBuilder.insert(int offset,String str)StringBuilder.insert(int offset,Char c):在 offset 位置插入一个字符串代码单元并返回 this。
  • StringBuilder.delete(1 nt startindex,int endlndex):删除偏移量从 startindex 到 -endlndex-1 的代码单元并返回 this。
  • StringBuilder.toString():返回一个与构建器或缓冲器内容相同的字符串。

参考资料

  1. 《Java核心技术 卷1 基础知识》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值