导论
(1) JDK是Java开发环境,JRE是Java的运行时环境,JRE主要用于运行Java的字节码。JDK包含JRE,JRE是JDK的子集。
(2)Java源代码文件后缀名是 .java,字节码文件后缀名 .class。java源代码文件不能直接被执行,只能通过java的解释器来解释统一规范定义的字节码文件。
Java与面向对象程序设计简介
(1)Java是面向对象的高级语言,C语言是面向过程的高级语言;
(2)面向对象的思想:将客观事物看作具有状态和行为的对象,通过抽象找出同一类对象的共同状态和行为,构成类;用程序来模拟这样一种思维;
(3)Java语言为什么可以跨平台?
源代码:我们用高级语言写出来的程序叫源程序,源代码。
Java程序经过编译之后,形成了二进制文件,后缀点class。这个点class文件不是任何一台真正机器系统的本地可执行程序,它将交给Java虚拟机(实际上是一个解释器)去执行。
Java程序看起来不是在真正的机器机器系统上运行的,而是在一个Java虚拟机上运行的。
Java虚拟机会对我们经过编译以后的二进制指令进行再次的解释(翻译),翻译成真正的本地系统的可执行的二进制指令。所以Java程序是半编译半解释的。
由于这样的原因,Java就可以跨平台。
一次编写,各处运行。
(4)对于利用计算机程序求解实际问题的顺序是:将实际问题进行抽象,用计算机语言表述问题,利用机器进行求解。
(5)Java语言有很多优点,平台无关性是其优点之一,作为一种纯面向对象语言,Java有很多内置的库同时支持Web应用的开发,同时有比较好的安全性和健壮性,是一种相对来说比较容易学习的语言。
(6)与C++不同,Java自动管理内存。
基本数据类型和表达式
变量和常量
文字量
文字量直接出现在程序中,并被编译器直接使用,比如30,3.141592654。文字量也被成为文字常量,所谓常量,就是在其生存期内值不可被改变的量。
标志符
1.标志符是一个名称,与内存中的某个位置(地址)相对应。
2.标志符的第一个字符必须是下列字符之一:
大写字母(A-Z)
小写字母(a-z)
下划线(_)
美元符号($)
3.标志符第二个字符以及后续字符可以是:
上述任意字符
数字(0-9)
变量
一个由标志符命名的项;
每个变量都有类型;
变量的值可以被改变。
常量
常量一旦被初始化以后就不可改变。
基本数据类型
所谓基本数据类型,也就是在语言标准规范中规定了的,编译器直接能够识别的这些类型,也叫内置数据类型。
数值型
1.整数类型 :
byte,short ,int:十进制数,开头不为o;oX跟十六进制数,如oXF1C4;o跟八进制数,如o726
long:同上,但后边跟l或L,如:84l,oX1F39L
2.浮点数类型:
float:数字后跟f或F,如1.23456F,1.893E2F
double:后边可选d或D做后缀,如1.23D
字符型
1.字符类型的文字量是由单引号括起来的字符或转义字符,如:'Z','k','\t'。
2.用16位的Unicode字符作为编码方式,如下面代码所示:
char var_char = 'a' ;
char char_tab = '\t' ;
3.某些特殊的字符型常量需要使用转义的形式来表示
布尔类型
Java用布尔类型来表示逻辑值真和假
布尔类型表示一个逻辑值,有两个取值:true和false
例如:
boolean is_salaried;
boolean is_hourly;
is_salaried = true; //将is_salaried设置为true
is_hourly = false; //将is_hourly设置为false
字符串
Java的基本数据类型中没有字符串类型。
String是一个类;
String类是JDK标准类集合中的一部分
String animal = "walrus";
String类型的对象animal,初始化成一个字符串,我们可以这样来使用字符串。
字符串文字量
1.由零个或多个字符组成,以双引号括起
2.每一个字符都可以用转义序列来表示
例如:
"" //空字符串
"\"" //只包含"的字符串
"This is a string" //有16个字符的字符串
"This is a" + "string" //字符串常量表达式,由两个字符串常量组成
运算符和表达式
算术运算符
1.运算符++和--
2.一元运算符+和-
3.加法运算符+和-
4.乘法运算符*,/,%
赋值运算符
1.简单赋值运算符=
2.复合赋值运算符
*= /= %= += -= <<= >>= >>>= &= ^= |=
E1 op = E2 等效于 E1 = (T)((E1)op(E2)),其中T是E1的类型。
关系运算符
关系表达式的结果类型永远是布尔类型(bool)
1.算术比较运算符<,<=,>,and >=
2.类型比较运算符 instanceof
例如:
e instanceof Point //Point是一个类
3.相等关系运算符
数字相等运算符==,!=
布尔相等运算符==,!=
引用相等运算符==,!=
逻辑运算符
“与”运算&&
“或”运算||
“非”运算!
条件运算符(表达式1?表达式2:表达式3)
首先计算表达式1
如果表达式1的值为true,则选择表达式2的值
如果表达式1的值为false,则选择表达式3的值
类型转换
每个表达式都有类型。
如果表达式的类型对于上下文不合适:1.有时会导致编译错误;2.有时语言会进行隐含类型转换。
扩展转换
byte--->char--->short--->int--->long--->float--->double
所谓扩展转换,就是由低类型向高类型转换,也就是由表示数据的范围比较小的类型向表示数据的范围比较大的类型转换。这种转换有可能损失精度。
1.从一种整数类型到另一种整数类型,或者从float到double的转换,不损失任何信息;
2.从整数类型向float或double转换,会损失精度。
窄化转换
double--->float-->long--->int--->short--->byte--->char
1.窄化转换可能会丢失信息,有危险,要慎用。
隐含转换
1.赋值转换
将表达式类型转换为制定变量的类型
2.方法调用转换
适用于方法或构造方法调用中的每一个参数
3.字符串转换
任何类型(包括null类型)都可以转换为字符串类型;
只当一个操作数是String类型时,适用于+运算符的操作数。另一个操作数不管是什么类型,都自动转换为String类型。
显式转换(强制转换)
将一个表达式转换为指定的类型;
例如:(float)5.0
扩展
引用数据类型:类、接口类型、数组类型、枚举类型、注解类型。String是JDK标准类集合的一部分 。