java语言是面对对象的程序设计语言,java程序的基本组成单元是类,类体中又包括属性与方法两部分。每一个应用程序的必须包括一个main()方法,含有main()方法的类称为主类。
在Eclipse下依次创建项目item,包Number和类Frist。在类体中输入以下代码,实现在控制台上输出“你好 Java”。
整数类型简称整型,用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整型数据根据它所占内存大小的不同,可分为byte,short,int,long四种类型。
int x; //定义int型变量x
int x,y; //同时定义int型变量x,y
int x=10,y=-5; //同时定义int型变量x,y并赋予初值
int x=-5+23; //定义int型变量x,并赋予公式(5+23)计算结果的初值
int型是Java整数值的默认数据类型
byte型定义方式与int相同。定义byte类型变量,代码如下:
byte a;
byte a,b,c;
bute a=19,b=-45;
short型的定义方式与int相同,定义short类型变量,代码如下:
short s;
short s,t,r;
short s=1000,t=-19;
short s=20000/10;
由于long型的取值范围比int型大,且属于高精度数据类型,所以在赋值时要和int型做出区分,需要在整数后加L或者l(小写的l),定义long类型变量,代码如下:
long number;
long number,rum;
long number=12345678l,rum=987654321L;
long number=123456789L*987654321L;
float型小数需要在后面加F或者f,可以使用d或者D来明确表明这是一个double类型数据,但加不进d或D并没有硬性规定,而定义float型变量时,不加F或f,系统会认为是double类型数据,进而出错,定义浮点类型变量,代码如下:
flato f1=13.23f;
double d1=4562.12d;
double d2=45678.1564;
char型:字符类型(char)用于存储单个字符,占用16个位(两个字节)的内存空间,在定义字符型变量时,要以单引号表示,如's'表示一个字符串,虽然只有一个字符,但由于使用双引号,它仍然表示字符串,而不是字符;
转义字符是一种特殊的字 符变量,它以反斜杠“\”开头, 后跟一个或多个字符。转义字符具有特 定的含义,不同于字符原有的 意义,故称“转义”。例如,printf 函数的格式串中用到的“\n”就是一个 转义字符,意思是“回车换行”。
将转义字符赋值给字符变量时,与字符常量值一样需要使用单引号。
“\”字符的转移字符为“\\”,“♡”字符的 Unicode 码为 2764,实例代码如下:
布尔类型又称逻辑类型,简称布尔类型,通过关键字boolean来定义布尔类型变量,布尔类型只有true和false两个值,分别代表布尔逻辑中的“真”和“假”,布尔值不能与整数类型进行转换,布尔类型通常被应在流程控制中,作为判断条件,定义布尔类型变量,代码如下:
boolean b; //定义布尔类型变量b
boolean b1,b2; //定义布尔类型变量b1,b2
boolean b=true; //定义布尔类型b的变量,并赋值给true
真:boolean TRUE
假:boolean FALSE
标识符可以简单的理解为一个名字,是用来标识类名,变量名,方法名,数组名,文件名的有效字符序列。
Java语音规定标识符由任意顺序的字母,下划线,美元符号,和数字组成,并且第一个字符不能是数字。
下面是合法的标识符:
name
user_age
$page
下面是非法标识符:
4word
String
User name
在Java语言中,标识符中的字母是严格区分大小写的,比如good和Good是两个不同的标识符。
关键字又称保留字,是 Java 语言中已经被赋予特定意义的一些单词,不可以把这些单词作为标识符来使用,int、boolean 等都是关键字。
本质:就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
Java变量是程序中最基本的存储单元。其要素包括变量名、变量类型和作用域。
(1)变量名必须是一个有效的标识符
(2)变量名不可以使用java中的关键字
(3)变量名不能重复
(4)应选择有意义的单词作为变量名
局部变量在使用前必须先声明、初始化(赋初值)再使用。
类变量:使用static定义。从属于类,生命周期伴随类始终,从类加载到卸载。如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值。
在Java语言中,主要是利用关键字final来定义一个常量。常量一旦被初始化后不能再更改其值。
只能被初始化一次
书写:常量一般大写字母和下划线:MAX_VALUE
从这个结果可以看到,part类运行后发生了错误,异常日志中记载part类出现编译问题,此编译问题正是常量number被二次赋值。
由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点,该变量会被释放掉,也就是说变量有它的生命周期。因此,变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,则在编译时会出现错误。在程序中,一般会根据变量的“有效范围”将变量分为“成员变量”和“局部变量”。
在类体中所声明的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可分为两种,即静态变量和实例变量。例如下面这段代码:
class Demo{
int x= 45;
static int y= 90
}
其中,x为实例变量,y为静态变量(也称类变量)。如果在成员变量的类型前面加上关键字 stati这样的成员变量称为静态变量。静态变量的有效范围可以跨类,甚至可达到整个应用程序之内。对静态变量,除了能在声明它的类内存取,还能直接以“类名.静态变量”的方式在其他类内使用。
在类的方法体中声明的变量(方法内部定义,“{”与“}”之间的代码中声明的变量)称为局部量。局部变量只在当前代码块中有效,也就是只能在“{”与“}”之内使用。
在类的方法中声明的变量,包括方法的参数,都属于局部变量。局部变量只在当前定义的方法有效,不能用于类的其他方法中。局部变量的生命周期取决于方法,当方法被调用时,Java 虚拟机为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存间,局部变量也将会被销毁。
运算符是一些特殊符号,主要用于数学函数,一些类型的赋值语句和逻辑比较方面。
赋值运算符以符号“=”表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方的操作数。
使用赋值运算符同时为两个变量赋值,在项目中创建类Eval,在主方法中定义变量,使用赋值运算符为变量赋值。
在java中,可以把赋值运算符连在一起使用。
如:x=y=z=5;
在这个语句中,变量x,y,z都得到同样的值5。但在实际开发中建议开发者分开赋值,这样可以让代码的层次更清晰。
java中的算术运算符主要有+(加),-(减),*(乘),/(除),%(求余),它们都是二元运算符。
其中,“+”和“-”运算符还可以作为数值的正负符号。
注意:在进行除法运算时,0不能做除数。例如,对于语句“int a = 5/0;”,系统会抛出ArithmeticException异常。
使用算术运算符模拟计算器,创建ArithmeticOperator类,让用户输入两个数字,分别用5种运算符对这两个数字进行计算。
代码中出现的Scanner扫描器可以让程序获得用户在控制台输入的值。
自增,自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量,自增,自减运算符的作用是使变量的值增1或减1。放在操作元前面的自增,自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算,放在操作元的自增,自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1)。例如:
++a(--a)//表示在使用变量a之前,先使a的值加(减)1
a++(a--)//表示在使用变量a之后,使a的值(减)1
粗略的分析,“++a”与“a++”的作用都相当于a=a+1。假设a=4,则:
b=++a;//先将a的值加1,然后赋给b,此时a值为5,b值为5
再看另一个语法,同样假设a=4,则:
b=a++;//先将a的值赋给b,再将a的值变为5,此时a值为5,b值为4
比较运算符是指可以使用下列运算符比较两个值。当用运算符比较两个值时,结果是一个逻辑值,不是 TRUE(成立) 就是 FALSE(不成立)的运算符号。
使用不同的比较运算符判断两个整数的关系,在项目中创建Compare,在主方法中创建整型变量,使用比较运算符对变量进行比较运算,并将运算结果输出。
返回类型为布尔型的表达式,如比较运算符,可以被组合在一起构成一个更复杂的表达式 这是通过逻辑运算符来实现的,逻辑运算符包括&(&&)(逻辑与),||(逻辑或),!(逻辑非)。逻辑运算符的操作元必须是boolean型数据。在逻辑运算符中,除了“!”是一元运算符,其他都是二元运算符。
结果为boolean型的变量或表达式可以通过逻辑运算符组合为逻辑表达式。
位运算符除“按位与”和“按位或”运算符外,其他只能用于处理整数的操作数,包括byte,short,char,int,long等数据类型。
三元运算符的使用格式为:
条件式 ? 值 1:值2
三元运算符的运算规则为:若条件式的值为true,则整个表达式取值1,否则取值2。例如:
boolean b=20<45? ture:false;
上述程序表达式“20<45”的运算结果返回真,那么boolean型变量b取值为ture。相反,如果表达式的运算结果返回为假,则boolean型变量b取值为false。
java中的表达式就是使用运算符连接起来的符合java规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。通常,优先级由高到低的顺序依次是:
(1)增量和减量运算
(2)算术运算
(3)比较运算
(4)逻辑运算
(5)赋值运算
如果两个运算符有相同的优先级,那么左边的表达式要比右边的表达式先被处理。
类型转换是将一个值从一种类型更改为另一种类型的过程。例如,可以将 String 类型的数据“457”转换为数值型,也可以将任意类型的数据转换为 String 类型。
如果从低精度数据类型向高精度数据类型转换,则永远不不会溢出,并且总是成功的;而把高精度数据类型向低精度数据类型转换时,则会有信息丢失,有可能能失败。
数据类型转换有两种方式,即隐式转换与显式转换。
自动类型转换:一定不会丢失数据
强制类型转换:有可能会丢失数据
从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作。这种类型的转换称为隐式转换。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高排列的顺序为 :byte 例如,可以将 int 型变量直接赋值给 float 型变量,此时 int 型变量将隐式转换成 float 型变量。代码如下: int x = 50; //声明 int 型变量 x float y = x; //将x赋值给 y,y的值为 50.0 隐式转换也要遵循一定的规则,来解决在什么情况下将哪种类型的数据转换成另一种类型的数据。 在项目中创建Conver,在主方法中创建不同数值型的变量,实现将各变量隐式转换。 当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换运算(又称强制类型转语法) 例如,将高精度数字转换为低精度数字。代码如下: int a = (int)45.23; //此时输出a的值为 45 long y = (long)456.6F; //此时输出y的值为 456 int b = (int)'d'; //此时输出 b的值为 100 执行显式类型转换时,可能会导致精度损失。除 boolean 类型外,其他基本类型都能以显式类型转换的方法实现转换。
2.显式类型转换