基础语法
文章目录
基本数据类型
整型
类型 | 存储需求 | 范围 |
---|---|---|
int(默认) | 4字节 | − 2 31 ∼ 2 31 − 1 -2^{31}\sim2^{31}-1 −231∼231−1 |
short | 2字节 | -32768~32767 |
long | 8字节 | − 2 63 ∼ 2 63 − 1 -2^{63}\sim2^{63}-1 −263∼263−1 |
byte | 1字节 | -128~127 |
注:
[1]长整型数值有后缀L。十六进制有前缀0x,八进制有前缀0,但八进制容易与十进制混淆,最好不要用。
[2]从Java 7开始,加上前缀0b或0B可以表示二进制数,还可以为数字字面量加下划线,如1_000_000,使其更具有可读性。
[3]Java没有任何无符号形式的 int long short 或 byte 类型。但是有将有符号数解释为无符号数的方法。例如Byte.toUnsignedInt()
浮点类型
类型 | 存储需求 | 范围 |
---|---|---|
float | 4字节 | 1.4013E-45~3.4028E+38 |
double(默认) | 8字节 |
所有浮点数值计算都遵循IEEE 754规范。下面是用于表示溢出和出错的三个特殊的浮点数值:
- 正无穷大
Double.POSITIVE_INFINITY
- 负无穷大
Double.NEGATIVE_INFINITY
NAN
不是一个数字,比如 0 0 \frac{0}{0} 00=NAN
char类型
类型 | 存储需求 | 范围 |
---|---|---|
char | 2 | 0~65535 |
char类型的值可以表示为十六进制数,范围从\u0000到\uFFFF。例如\u2122表示商标符号TM,\u03C0表示希腊字母 π \pi π。
转义序列 | 名称 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 制表 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
" | 双引号 | \u0022 |
\ | 反斜杠 | \u005c |
boolean类型
true 和 flase,用于判断逻辑条件。整数型和布尔值之间不能相互转换。(和C++不同)
引用数据类型
字符串
Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类。
关键字:String
从概念上讲,Java字符串就是Unicode字符序列。
子串
String类的substring方法可以从一个较大的字符串提取出一个子串。
例如:
String greet="hello";
String s=greet.substring(0,3);//创建“hel”子串
拼接
拼接:两个字符串相加,也可以是一个字符串与非字符串,后者会自动转换成字符串
int age = 13;
String rating = "PG"+age;//"PG13"
检测字符串是否相等
equals
方法可以检测两个字符串是否相等。equalsIgnoreCase
是不区分大小写的判断。
例如:
"hello".equals("Hello");//区分大小写,返回false
"hello".equalsIgnoreCase("Hello");//返回true
数组
数组是一种数据结构,用来存储同一类型值的集合。
声明数组的格式:
数组类型[] 数组变量名 = new 数组类型[XXX];
动态初始化
数组必须要初始化,才能使用,如果只是赋值了null,将会发送空指针异常。
int[] array = new int[300];
double[] arrayB = new double[300];
String arrayC[] = new String[5];
静态初始化
/**静态初始化**/
int[] arraya=new int[]{5, 15, 25};
String[] arrayb=new String[]{"Hello","World","Java"};
/**静态初始化的省略格式*/
int[] arrayAA={10,20,30};
//静态初始化的标准格式,可以拆分成为2个步骤
int[] arrayBB;
arrayBB=new int[]{11,21,31};
打印数组
- 直接打印数组名称,得到的是数组相对应的内存地址哈希值
- 访问数组元素的格式:数组名称[索引值]
注意:索引值从0开始,一直到“数组的长度-1”为止。 - 使用动态初始化数组的时候,其中元素会自动拥有一个默认值,规则:
- 整数类型: 0
- 浮点类型: 0.0
- 字符类型 ‘\u0000’
- 布尔类型 false
- 引用类型 null
注意:
静态初始化其实也有默认值,
只不过系统自动将默认值替换成为了大括号中的具体数值。
示例代码:
public static void main(String[] args) {
//静态初始化
int[] array = {10,20,30};
System.out.println(array);//哈希值,内存地址值
System.out.println(array[0]);//10
System.out.println(array[1]);//20
System.out.println(array[2]);//30
int num = array[1];//把20赋给num
System.out.println(num);//20
//动态初始化
int[] array1 = new int[3];
System.out.println(array1);//内存地址值
System.out.println(array1[0]);// 0
System.out.println(array1[1]);// 0
System.out.println(array1[2]);// 0
array1[1]=123;
System.out.println(array1[1]);// 123
}
类
关键字:class
以后介绍
接口
关键字:Interface
以后介绍
变量与常量
声明变量
骆驼命名法:骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母。
声明变量格式:数据类型 数据名
例如:int vactionDays;
变量初始化
声明一个变量之后,必须用赋值语句赋值。
int vactionDays;
vactionDays = 12;
常量
在Java中,利用关键字final
指示常量。例如:
public class Constants {
//类常量,可以在一个类的多个方法中使用
public static final double CM_PER_INCH = 2.54;
public static void main(String[] args)
{
double parperWidth=8.5;
double parperHeight=11;
System.out.println("Parper size in cemtimeters:"
+parperWidth*CM_PER_INCH+"by"+parperHeight*CM_PER_INCH);
}
}
final
表示这个变量 只能被赋值一次,一旦赋值后就不可改变。 习惯上,常量名全用大写。
注意:类常量的定于位于main方法的外部。
枚举类型
关键字:enum{ }
示例
public class 枚举 {
enum Size{
SMALL,MEDIUM,LARGE,EXTRA_LARGE;
};
public static void main(String[] args){
Size s=Size.MEDIUM;
System.out.println(s);
}
}
运算符
加减乘除:+ - * /
取模:%
自增:++
自减:--
逻辑运算符:&&(与)、||(或)、!(非)
位运算符:
&
and 与
|
or 或
^
xor 位异或,第一位操作数的第n位与第二个操作数的第n位相反,那么结果也为1
~
not 取反(位非)
>>
右移 <<
左移 >>>
无符号右移 <<<
无符号左移
三元运算符:
格式:表达式 ? x : y
示例代码:
public static void main(String[] args)
{
String str1="hello";
System.out.println(str1+" world");
//优先级问题
System.out.println(str1+20+30);//hello2030
System.out.println(str1+(20+30));//hello50
System.out.println(0b1000&0b1011);//返回8,证明在第4位上数值相同
System.out.println((0b1000&0b1011)/0b1000);
System.out.println(0b0000&0b0000);//返回0
System.out.println(true && false);//返回false
System.out.println(0<1 && 2<1);//返回false
System.out.println(0b0010 ^ 0b0100);//返回6,就是0110
System.out.println(0b0011 | 0b0000);//返回3
System.out.println(~0b0010);//返回-3
int n=8;
int fourthBitFromRight = (n&(1<<3))>>3;
System.out.println(5<<3);//将5转换成2进制左移3位
System.out.println(fourthBitFromRight);
//无符号位运算对比
System.out.println(5>>3);
System.out.println(-5>>3);//负号是用高位取反来表示,JAVA里面数的表示一般32位
System.out.println(-5>>>3);
}
}