标识符、关键字、基本数据类型以及其包装类、运算符
l 标识符
一、 由数字、字母、下划线、美元符组成,数字不可以开头。
二、 不可以使用关键字和保留字,但可以包含关键字和保留字。
三、不包含空格。
四、不能包含@、#等特殊字符
Java中的名称规范:
包名:多单词组成时所有字母都小写。
xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。
XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。
XXX_YYY_ZZZ
l 关键字(keyword)
1、 用于定义数据类型的关键字
基本数据类型:
整数类型:byte short int long 浮点类型:float double
字符类型:char 布尔型:boolean
引用数据类型:
class(类) interface(接口)
void用于函数上表示无返回值类型
2、用于定义数据类型值的关键字
true(真) false(假) null(空)
3、 用于定义流程控制的关键字
判断:if else switch case default
循环:for while do
继续循环:continue 结束循环或选择结构:break
返回:return
4、 用于定义访问权限修饰符的关键字
private(私有的) protected(受保护的) public(公有的)
5、 用于定义类、函数,变量修饰符的关键字
abstract(抽象的) final(最终的) static(静态的) synchronized(同步的) enum(枚举)
6、用于定义类与类之间关系的关键字
extends(继承) implements(实现)
7、 用于定义建立实例及引用实例,判断实例的关键字
new(建立实例) this(当前引用) super(父类引用) instanceof(判断对象类型)
8、 用于异常处理的关键字
try(检查异常) catch(捕获异常) finally(最终执行)
throw throws:两多表示抛出异常,但使用位置不同
9、 用于包的关键字
package(创建包) import(导入包)
10、其他修饰关键字
native(本地)
strictfp(strict float point,精确浮点)
transient(变量修饰符,用它声明一个实例变量,在对象序列化时不会被序列化)
volatile(类型修饰符,用来修饰被不同线程访问和修改的变量)
assert(断言,可以看作是异常处理的一种高级形式,用于捕捉我们在代码中做出的假设)
注:main不是关键字,却是被虚拟机所识别的一个名称。
l 基本数据类型以及其包装类
一、基本数据类型对象包装类。
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
二、基本数据类型转成字符串
基本数据类型+" "
基本数据类型.toString(基本数据类型值);
如:Integer.toString(34);//将34整数变成"34"。
三、字符串转成基本数据类型。
xxx a=Xxx.parseXxx(string);//必须传入对应类型的字符串。
如 inta=Integer.parseInt("123");//静态
booleanb=Boolean.parseBoolean("true");
Integeri=new Integer("123");
intnum=i.intValue();//跟上面的静态方式的结果一样,但这种属于对象调用方式。
注意:
在使用时,Integer x = null;上面的代码就会出现NullPointerException。
四、十进制转成其他进制。
static String toBinaryString(int i);
toHexString(); (如上)
toOctalString();(如上)
五、其他进制转成十进制。
parseInt(String,radix);
如:int a= Intager.parseInt("3c",16);
JDK1.5版本以后出现的新特性。
Integer x=new Integer(4);
等效于:Integer x=4;//自动装箱。
还可以直接进行运算:x=x+2;//x进行自动拆箱。变成了int类型。和2进行加法运算。再将和进行装箱赋给x。x的拆箱动作等效:x.intValue()。
六、示例
Integer x=128;
Integer y=128;
x==y (false)
Integer m=127;
Integer n=127;
m==n ( true)
原因:
因为m和n指向了同一个Integer对象。因为当数值在byte范围内,对于新特性,如果该数组已经存在,则不会再开辟新的空间。
七、小练习
/*
"12 0 99 -7 30 4 100 13 -6"
要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。
"-7 -6 0 4 12 13 30 99 100"
思路:1、将字符串切割为字符串数组
2、将字符串数组转换为整数类型数组
3、对整数类型数组进行冒泡排序
4、将排序后的整数类型数组转换为字符串
*/
class StringSort
{
public static void main(String[] args)
{
String s="12 0 99 -7 30 4 100 13 -6";
sop(s);
sop(stringSort(s));
}
public static String stringSort(String s)
{
//将字符串切割成字符串数组
String[] str=s.split(" ");
//将字符串数组转换为整数类型数组
int[] arr=stringToInt(str);
// 对整数类型数组进行冒泡排序
bubbleSort(arr);
//将排序后的整数类型数组转换为字符串
return intToString(arr).toString();
}
// 将字符串数组转换为整数类型数组方法
private static int[] stringToInt(String[] str)
{
int[] arr=new int[str.length];
for(int x=0;x<str.length;x++)
{
arr[x]=Integer.parseInt(str[x]);
// sop(arr[x]);
}
// sop(arr);
return arr;
}
//对数组进行冒泡排序
private static void bubbleSort(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
for (int y=0;y<arr.length-x-1; y++)
{
if(arr[y]>arr[y+1])
swap(arr,y,y+1);
}
}
// sop(arr);
}
//交换数组中的两元素
private static void swap(int[] arr,int x,int y)
{
arr[x]=arr[x]^arr[y];
arr[y]=arr[x]^arr[y];
arr[x]=arr[x]^arr[y];
// int temp=arr[x];
// arr[x]=arr[y];
// arr[y]=temp;
}
//将整数类型数组存放到一个StringBuiler容器中
private static StringBuilder intToString(int[] arr)
{
StringBuilder sb=new StringBuilder();
for (int x=0;x<arr.length-1; x++)
{
sb.append(arr[x]+" ");
}
sb.append(arr[arr.length-1]+"");
return sb;
}
//打印字符串
private static void sop(Object obj)
{
System.out.println(obj);
}
//遍历数组
private static void sop(int[] arr)
{
for (int x=0; x<arr.length;x++ )
{
System.out.print(arr[x]+"\t");
}
System.out.println();
}
}
结果:
l 运算符
1、算术运算符
注:进行取模运算时,如果有负数,运算结果取决于运算左边有没有负数。
字符串数据和任何数据使用 +都是相连接,最终都会变成字符串。
2、赋值运算符
符号:= += -= *= /= %=
例: int a,b,c; a=b=c =3;
int a = 3; a+=5;//等同运算a=a+5;
3、比较运算符
注:1、比较运算符的结果都是boolean型,也就是要么是true,要么是false。2、比较运算符“==”不能误写成“=”。
4、逻辑运算符
逻辑运算符用于连接boolean类型的表达式。
&:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。
|:两边只要有一个为true,结果为true;只有两边都为false,结果为false。
^:两边相同结果是false,两边不同结果是true。
&和&&的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
5、位运算符
左移:<<;空位补0,被移除的高位丢弃,空缺位补0。
右移:>>;被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
无符号右移:>>>;被移位二进制最高位无论是0或者是1,空缺位都用0补。
与: &;二进制位进行&运算,只有1&1时结果是1,否则是0。
或:|;二进制位进行 |运算,只有0 | 0时结果是0,否则是1。
异或: ^;任何相同二进制位进行 ^运算,结果是0;1^1=0 , 0^0=0。
不相同二进制位 ^运算结果是1。1^0=1 , 0^1=1。
反码:~;对二进制进行取反。
6、 三元运算符
格式:
(条件表达式)?表达式1:表达式2;
a)如果条件为true,运算后的结果是表达式1;
b)如果条件为false,运算后的结果是表达式2;
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
运算符的优先级: