一、关键字
class First
{
public static void main(String[] args)
{
System.out.println("hello 26");
}
}
以上程序中蓝色字体的单词为关键字
定义:被Java语言赋予了特殊含义的单词
特点:关键字中所有字母都为小写
以下列表列出了Java语言中常用的10类关键字
相对较难记忆的关键字enum(枚举) abstract(抽象的) final(最终的) synchronized(同步的)
new(创建实例) super(父类引用) instanceof(判断对象是否为某一类型)
package(创建包) import(导入包) native(本地) strictfp(strict float point:精确浮点)
transient(当串行化某个对象时,如果该对象的某个变量是transient,那么这个变量不会被串行化进去)
volatile(类型修饰符,用来修饰被不同线程访问和修改的变量)
assert(断言)
注意区分throws和throw
注:main不是关键字,却是被虚拟机所识别的一个名称。1、throws出现在方法函数头,后可接多个异常类;而throw出现在函数体,只能接一个异常对象
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
定义合法标识符规则:定义:在程序中自定义的一些名称。
组成:26个英文字母(分大小写);数字0-9;美元符号"$"以及下划线"_"。
1、数字不能开头。
2、不能使用关键字
注意:Java严格区分大小写;为了提高程序的可阅读性,一定要起有意义的名字。
Java中的名称规范:
1、包名:多单词组成时所有字母都小写。
xxxyyyzzz:如java.awt.color
2、类名接口名:多单词组成时,所有单词的首字母大写。
XxxYyyZzz:如FirstDemo
3、变量名和函数名:多单词组成时,第一个单词首字母小写,第二 个单词开始每个单词首字母大写。
xxxYyyZzz:如getName()
4、常量名:所有字母都大写。多单词时每个单词用下划线连接。
XXX_YYY_ZZZ:如MAX_VALUE
三、注释
/**
*这是我的第一个Java程序
*@author Espose
*/
class First
{
/*
这是程序的主入口
*/
public static void main(String[] args)
{
//输出hello 26
System.out.println("hello 26");
}
}
定义:用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性。
格式:
单行注释格式: //注释文字
多行注释格式: /* 注释文字 */
文档注释格式:/** 注释文字 */
对于单行(//)和多行注释(/**/),被注释的文字,不会被JVM(java虚拟机)解释执行。对于文档注释,
是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网 页文件形式体现
的该程序的说明文档。
四、常量和变量
4.1 Java中常量的分类常量表示不能改变的数值。
4.2 对于整数:java有三种表现形式1,整数常量。所有整数
2,小数常量。所有小数
3,布尔型常量。较为特有,只有两个数值(true false)。
4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。
5,字符串常量。将一个或者多个字符用双引号(" ")标识。
6,null常量。只有一个数值就是:null.
1、十进制:0-9 ,满10进1.
2、八进制:0-7 ,满8进1. 用0开头表示。
3、十六进制:0-9,A-F,满16进1. 用0x开头表示。
4.3 进制的基本转换
1、十进制二进制互转
十进制转成二进制:除以2取余数(以10为例)
十进制数10转成二进制结果为1010
二进制转成十进制:乘以2的幂数(以1010为例)
二进制数1010转成十进制数结果为0*20+1*21+0*22+1*23=10
2、十进制八进制互转
先将十进制转二进制,再从二进制数的最小位到最高位以三个二进制位为一个八进制数
以十进制数123为例
十进制123转成八进制的结果为173
3、十进制十六进制互转
与十进制转成八进制方法类似,只是是以四位为一个十六进制位,同样以十进制数123为例
十进制123转成十六进制的结果为7B
4、负数的二进制表现形式为对应的正数二进制取反加1
以-123为例:
123的二进制形式为:
-123的二进制为123的二进制区分加1:
4.4 变量
4.4.1 变量的概念该区域的数据可以在同一类型范围内不断变化。变量是内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),
所以要定义变量是为了:用来不断的存放同一类型的常量,并可以重复使用
使用变量注意:
1、变量的作用范围(一对{ }之间有效)
2、初始化值
定义变量的格式:
数据类型 变量名 =初始化值;(如int x=5)
4.4.2 Java数据类型
大小的内存空间Java语言是强类型语言,对于每一种数据都定义了明确 的具体数据类型,并在内存中分配了不同
如果整数不加类型声明,会默认为int型;小数如果不加类型说明,会默认为double型
Java数据类型转换:
1、自动类型提升
byte a = 1;
int b = 2;
b = b+a;//a会自动提升为int类型进行运算。
2、强制类型转换
byte a = 1;
a = a + 2;//报错:“不兼容的类型: 从int转换到byte可能会有损失”
可通过强制类型转换,解决类型不兼容的问题,如下:
a = (byte)a+2;//强制类型转换,强制将a+2的结果转换为byte类型,再赋值给a。
五、运算符
5.1 算术运算符
注意:整数做除法会舍弃小数、只保留整数(如int x=123;x=x/100*100; x的最终值为100而不是123)
小数做除法则不会(如 double y=3.3;y=y/3*3; y的最终结果为3.3)
5.2 比较运算符
注意:比较运算的结果都为boolean型(ture、false) ;“==”和“=”不同,前者用于比较两个数是否相等,后者是赋值
5.3 逻辑运算符
逻辑运算符用于连接boolean型表达式:如x>3&x<10;
注意:
“&”和“&&”有区别
&:无论其左边为真还是假,右边都需要继续判断
&&:如果左边为假,则不需要再判断右边;如果左边为真,则继续判断右边
“|”和“||”也是同样的执行原理
|:无论其左边为真还是假,右边都需要继续判断
||:如果左边为真,则不需要再判断右边;如果左边为假,则继续判断右边
"^"和“|”有区别
代码实例:异或“^”:左右不相同时(一个true、一个false),结果才为ture
或“|”:左右至少有一个为true,结果才为ture
//逻辑运算符:用于连接boolean类型表达式;
/*
与&;全真为真,有假为假
或|;有真为真,全假为假
异或^:两边相同为假,不同为真。
非!:真即假,假即真
与&&:串联电路,-1-2-,1为假即假,全为真则真
或||:并联电路,有真即真,全假为假
&与&&区别:&无论左边是真是假,右边都要运算 &&则只要左为假,右边不再计算,左边为真再看右边
|与||区别:|无论左边是真是假,右边都要运算 ||则只要左为真,右边不再计算,左边为假再看右边
*/
class LuoJiYunSuan
{
public static void main(String[] args)
{
int x=5;
boolean y=x>5;
System.out.println(!y);
}
}
5.4 位运算符
位运算符需要注意的细节
“>>”与">>>"的区别 :
前者如果最高位为0,移位后空缺位补0;如果最高为1,移位后空缺位补1
后者不论高位为0还是为1,移位后都补0
以下代码实例展示了应用“>>>”的位移原理来获取整数60的十六进制数3c
class ShiLiuJinZhiZS
{
public static void main(String[] args)
{
//将整数60装换成十六进制表示形式 先与&再位移>>>
/*
0000-0000 0000-0000 0000-0000 0011-1100 (60)
& 0000-0000 0000-0000 0000-0000 0000-1111 (15)
---------------------------------------------------
= 0000-0000 0000-0000 0000-0000 0000-1100 (12)
0000-0000 0000-0000 0000-0000 0000-0011 (60>>>4)
& 0000-0000 0000-0000 0000-0000 0000-1111 (15)
---------------------------------------------------
= 0000-0000 0000-0000 0000-0000 0000-0011 (3)
*/
int a=60;
//得到60最后四位二进制数值
int n1=a&15;
int n2=(n1>10)?(char)(n1-10+'A'):n1;
System.out.println((char)(n1-10+'A'));
/*
0-9 'A' 'B' 'C' 'D' 'E'
65 66 67 68 69
十进制数12十六进制数为'C'
char(n1-10+'A')
*/
//得到60倒数第二个四位二进制数值
int n2=a>>>4&15; //>>对负数最高位补一,结果会有误。
System.out.println(n2);
}
}
对于反码“~”,是对二进制取反,4.3节中提到如何得出一个负数的二进制数:既将其正数的二进制数取反再加1
以-6为例:-6=‘6的二进制数取反’+1
对于异或"^"故‘6的二进制取反’=-7,既~6=-7
原数异或同一个数两次得原数,如:7^4^4=7 ;异或可用于数据加密或数据交换中
以下代码展示了应用异或实现数据交换等三种常用数据交换方法:
class WeiYunSuan
{
public static void main(String[] args)
{
//1、引入三方变量,交换数据
int n=5,m=6,c;
System.out.println("n="+n+","+"m="+m);
c=n;
n=m;
m=c;
System.out.println("n="+n+","+"m="+m);
//2、不引入第三方变量,交换数据,应用和不变的原理
/*
int n=5,m=6;
System.out.println("n="+n+",m="+m);
n=n+m;
m=n-m;
n=n-m;
System.out.println("n="+n+",m="+m);
*/
//3、不引入第三方变量,交换数据,应用原数跟同一个数异或两次得原数的原理
/*
int n=5,m=6;
System.out.println("n="+n+",m="+m);
n=n^m;
m=n^m;
n=n^m;
System.out.println("n="+n+",m="+m);
*/
System.out.println(2<<3);//2*8最快的运算方式,左移三位求解
System.out.println(-6>>>2);
System.out.println(6&5);
System.out.println(6|2);
System.out.println(6 ^ 2);
System.out.println(~6);
}
}
5.5 赋值运算符
符号:=、+=、-=、*=、 /=、 %=
实例:int a+=4等同于a=a+4;
int a-=2等同于a=a-2;
代码实例:
class FuZhiYunSuan
{
public static void main(String[] args)
{
short a=5;
a+=5;//对,类似a=5一样为赋值运算,内部会将a+5自动转化成short型
//a=a+5;//报错,a+5结果为int型,int型赋值给short型不可以。
System.out.println(a);
}
}
5.6 三元运算符
格式: (条件表达式)?表达式1:表达式2;示例: 获取两个数中较小数。如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
int x=5,y=6,z;
z = (x>y)?y:x;//z变量存储的就是两个数的较小数
5.7 转义字符
定义:转义字符:通过"\"来转变后面的字母或符号的含义
代码实例:
class ZhuanYiZiFu
{
/*
转义字符:通过"\"来转变后面的字母或符号的含义
\n:换行
\b:退格,相当于backspace
\r:按下回车键(return),window系统,回车符由两个字符来表示\n \r
\t:制表符,相当于tab键
*/
public static void main(String[] args)
{
System.out.println("Hello World!");//println中“ln”代表换行;
System.out.println("Hello \nWorld");
System.out.println("Hello \tWorld");
System.out.println("Hello \bWorld");
System.out.println("Hello \rWorld");
System.out.println("\"Hello World\"");//输出带双引号的“Hello world”
System.out.println("\\Hello\\");
char ch='\'';
char c='你';//一个中文占两个字符。
}
}