本文目录一览:
- java的语法
- java基础语法部分有哪些
- [java 中的语法到底指的什么?](#java 中的语法到底指的什么?)
- java语法基础,具体内容
- java中的语法是什么意思
java的语法
Object s=e.getSource();
//Object
是什么意思?Object
是 Java 世界中所有类的根类,即所有类的祖先,其他类都实现Object
类中的方法。if(s instanceof JButton)
//instanceof
是什么意思?A instanceof B
:判断 A 是否是 B 的实例(具体的一个例子)。 举个例子就是:有的人是学生,有的人是老师,现在有个人想用学生的方法,但实例化这个人的时候实例化的是人,并不是学生(虽然你知道他是个学生),这怎么办呢?强转的话会报错,虚拟机认为不能把一个人强转成学生,这时候就应该用instanceof
判断一下,看那个人是否是学生的实例,是的话,就可以强转,执行学生的方法。 例子有点绕,希望你能理解....JButton b=(JButton)s;
//JButton
加括号是什么意思? 如果s
是JButton
的实例(即s
是一个JButton
),则执行这行代码,将s
强转成JButton
。
...
}
java基础语法部分有哪些
Java 的基础语法包括:
- 开发环境搭建
- 常量
- 变量
- 数据类型
- 运算符
- 选择结构 -
if
-switch
- 循环结构 -
while
-do-while
-for
以及各种循环控制与多层嵌套循环 - 方法的设计与使用
- 数组
- 递归
- 冒泡排序、选择排序等多种排序
- 二分查找
- 线性查找
java 中的语法到底指的什么?
Java 程序中的每个变量要么是基本数据类型(boolean
, char
, byte
, short
, int
, long
, float
, double
),要么是对对象的引用。
C++ 有许多种基本类型,额外还有 struct
, union
, enum
, 数组和指针,C++ 指针可以指向对象,也可以不指向对象。
Java 没有枚举、联合类型,因为 Java 认为没有必要。将可有可无的语言元素去掉是 Java 对 C/C++ 做出的一大改变,因此,普遍认为 Java 较 C++ 更轻便,更精简。
Java 采用 Unicode 字符集,C++ 通常用 ASCII 字符集。但 ASCII 是 Unicode 的子集,对于习惯于 ASCII 的程序员感觉不到区别。
Java 中的 boolean
类型不能转换成其他类型,反之亦然。C++ 最近引进了 bool
类型,代表布尔类型,整型也作为逻辑判断。
模板是一种“泛型编程思想”,它有别于“面向对象编程思想”。C++ 在很大程度上已经支持了这种新型编程方法,特别是 STL 的出现。
Java 目前仍未支持泛型编程,不过据说 Sun 公司有在 Java 中引入模板的计划。
C++ 支持“运算符的重载”,这是它的一个很重要的多态特征,是数据抽象和泛型编程的利器。它允许直接对对象进行四则运算,正像基本数据类型那样。
Java 不支持这种多态机制,也是为降低复杂性。
两种语言都支持方法重载(overloading)。
在 C++ 中,为了允许运行时动态决定哪个函数被调用,一个函数必须用 virtual
修饰。virtual
关键字被自动继承,用以支持多态。
凡是没有用 virtual
修饰的成员函数(包括 static
)都是静态绑定的,即在编译时决定调用哪个版本。
而在 Java 中,除了 static
、final
、private
是静态绑定以外,所有方法一律按动态绑定处理。
C++ 中有“拷贝构造函数”的概念,在三种情况下,自动调用它:
- 用一个对象初始化另一个对象
- 对象作实参进行函数调用
- 对象作函数的返回值
通常,当一个对象需要做“深拷贝”(钱能:《C++ 程序设计教程》)时,我们需要为它事先定义“拷贝构造函数”、“赋值运算符的重载函数”和“析构函数”;否则编译器将以“按位 copy”的形式自动生成相应的缺省函数。倘若类中含有指针成员或引用成员,那么这三个默认的函数就隐含了错误。
Java 则没有这种语法结构和语义逻辑。
C++ 支持
inline
函数,可以避免函数的堆栈调用,提高运行效率。 Java 无这种语义。 C++ 中,构造函数的初始化列表是这样使用的:首先按继承顺序调用基类的构造函数构造基类对象,然后按声明顺序调用成员对象的构造函数构造成员对象,最后对列表中出现的成员变量做初始化。 Java 不采用初始化列表这种构造机制。 它们的构造顺序基本一致: - 静态变量初始化
- 静态初始化块(Java)
- 调用基类的构造函数构造基类对象
- 实例变量的初始化
- 构造函数的其余部分
Java 使用
abstract
关键字修饰抽象方法或抽象类。 C++ 的对等语法是“纯虚函数”和“抽象类”。 两者都使用抽象类作为继承层次中的基类,提供一般概念,由子类实现其抽象方法,且抽象类都不能被直接实例化为对象。 Java 中有final
关键字,修饰类、方法或变量: final
类不能被继承final
方法不能被子类覆盖final
变量就是常量 C++ 中没有这个关键字,常量可以使用const
或#define
定义。const
还可以修饰成员函数,即“常成员函数”,当一个const
成员函数修改成员数据,或调用非const
成员函数时,编译器会报错。 我们应将不修改成员数据的函数声明为const
。 Java 和 C++ 中的static
关键字语法和语义基本相同。static
成员变量又叫类变量,被类的所有对象共享:A::x
(C++):必须在类体外初始化A.x
(Java):必须在类体内初始化static
成员方法又叫类方法,访问static
变量:A::f()
(C++)A.f()
(Java) 两者都有内部类和局部类的语法和语义。 Java 中没有友元函数和友元类的概念,严格支持封装,不允许外部方法访问类的私有成员。 而 C++ 支持friend
关键字,允许外部方法访问类的私有成员,因此不是一种纯面向对象的编程语言。 Java 中类或interface
可以用public
修饰,也可以不修饰;而 C++ 类不能修饰。 三种访问权限的语义相同,语法略有差别。 C++ 中还有继承权限修饰符,Java 则没有:class A: protected B, public C
(C++)class A extends B
(Java) Java 有super
关键字,指代父类对象,通常被用于调用父类的构造方法或一般方法。 C++ 则没有super
关键字。 两者都有this
,指代当前对象。 Java 有package
的概念,可以将类组织起来,便于打包和部署,也有利于类的安全。C++ 没有这个概念,一个类可以被任意类访问。 Java applet 可以被嵌入 HTML 文档中,然后由 Web 浏览器下载和执行。 Java API 有对网络通讯的特别支持。 C++ 则无内置网络功能。 C++ 程序员必须显式地实现动态内存管理,在析构函数中用delete
运算符或free()
函数释放对象和其他动态分配的数据空间,否则会造成“内存泄露”。 而在 Java 中,垃圾收集是自动的。当对象的最后一个引用变量被释放掉,这个对象就成为垃圾收集器的候选对象了。 因此 Java 不支持析构函数。finalize()
方法主要被用来释放先前打开的非内存资源,如文件句柄。 Java 源代码被编译成字节码(.class
文件),字节码是一种只有 JVM 才能识别的二进制低级代码,它与具体的处理器无关,要由安装在 OS 之上的 JVM 解释执行,转换成相应平台的机器码,因此 Java 是体系结构中立和跨平台的。 而 C++ 直接被编译成底层平台的二进制机器码,由 CPU 执行,是平台相关的。 因此,当解释执行时,Java 程序速度更慢。 Java 语言支持多线程,允许并发线程的同步与互斥操作。 C++ 则没有这种内在机制。javadoc.exe
可以将 Java 程序的内容和结构转换成 HTML 格式的文档。 回 C 是面向过程的,C++ 和 Java 是面向对象的。 主要是差别对象的概念。 Java 和 C++ 人说的比较多的主要的是有没有指针的差别。 回 Java 简单易学但效率不高! C++ 相反有点麻烦效率高! 还有就是 Java 的可移植性好!能实现跨平台,即一次编写到处适用! C 是面向过程的程序设计语言。C++ 是面向对象的程序设计语言,不过 C++ 语言保持了对 C 语言的兼容,也就是说在 C++ 程序可以不用修改地插入 C 语言代码。Java 也是面向对象的程序设计语言,主要是实现平台无关性,它的出现主要为了实现对一种智能终端的编程(有人设想在不远的将来,你的冰箱有可能自己知道里面的东西已经不多,按着你的需要向相应的供货商订购。在你上班的时候也可以通过互联网开启你家里的微波炉,回到家就有好吃的东西^_^)。 还有: Java 主要应用于上层,用户使用 Java 不需要知道网络协议的细节,只需要知道如何调用相关接口就可以了。 C 和 C++ 主要应用于网络底层,用 C 和 C++ 的程序员必须对协议有相关认识。 至于哪个简单,似乎应该说没有难易之分。 只要你认真去学都差不多。
java语法基础,具体内容
Java基础——Java开发前奏
Java的特点
Java 最主要的特点是:一次编译,到处运行(Write Once, Run Anywhere.)。
原理:Java 源程序经编译后生成 .class
字节码文件,.class
文件由 Java 虚拟机(JVM)解释执行。不同的操作系统下,只要有相应的 Java 字节码解释程序,.class
文件就能够运行,这是 Java 跨平台性的根本。C 和 Java 编程与执行的过程如下图所示:
Java的内涵
- 是一种编程语言
- 是一套开发工具
- 是一个运行环境
Java应用平台
- J2EE(Java 2 Platform Enterprise Edition)——用于企业级应用程序的开发
- J2SE(Java 2 Platform Standard Edition)——用于普通标准应用程序的开发
- J2ME(Java 2 Platform Micro Edition)——用于小型消费类电子产品或嵌入式系统的开发 J2SE 包括 4 部分——JVM、JRE、JDK 与 Java 语言。
环境变量的设置
环境变量——在操作系统中定义的变量,可供操作系统上所有的应用程序使用。
- 查看环境变量
a. 命令提示行:环境变量的命令——
set
(环境变量名) b. 窗口方式:我的电脑-属性-高级-环境变量 - 设置 path 环境变量
path 环境变量的作用:设置操作系统寻找和执行应用程序的路径。
JAVA_HOME:C:\Program Files\Java\jdk1.6.0_14 path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
- 设置 classpath 环境变量
classpath 环境变量的作用:让 Java 执行环境找到指定的 Java 程序(
.class
文件)。classpath:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
注意:
a. %JAVA_HOME%
前面有“.;”,“.”表示当前目录,两个路径之间用“;”隔开。
b. 设置 classpath 的路径中不能有空格,也不能有中文字符。
JVM的运行过程
Java 反编译工具——JAD、FrontEnd
Java开发工具
- 记事本
注意保存时文件名应为
*.java
。 - UltraEdit、EditPlus
使用 EditPlus 编辑和编译 Java 程序,需要进行相应配置。选择“工具”-“参数选择”-“工具”-“用户工具”-“添加工具”-“应用程序”。首先设置“javac”的参数,具体如下图,其中“命令”为
javac.exe
文件的地址。 然后设置“java”的参数,如下图所示,其中“命令”为java.exe
文件的路径。 设置好后默认“javac”工具的快捷键为Ctrl+1
,“java”工具的快捷键为Ctrl+2
。当编辑好 Java 源程序后,使用Ctrl+1
即可对其进行编译,然后按Ctrl+2
运行程序。如下图所示: - 集成开发环境——Eclipse、MyEclipse、JBuilder 等。 关于 Eclipse 和 MyEclipse,刚用的时候感觉二者差不多,查了资料才知道 Eclipse 是基础,如同操作系统;而 MyEclipse 是在 Eclipse 上面运行的程序,不过进行了增强并提供了新功能。 以前用过 Microsoft 的 Visual Studio 2005,个人感觉 VS2005 是一个功能非常强大的集成开发环境,不过 .NET 和 Java 毕竟不是一家人,学 Java 还是要用 Eclipse 的。
JDK中的常用包
java.lang
——包含一些 Java 语言的核心类,如String
、Math
、Thread
、System
、Integer
类等。java.awt
——包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面(GUI)。java.applet
——包含 applet 运行所需的一些类。java.net
——包含执行与网络相关操作的类。java.io
——包含能提供多种输入/输出功能的类。java.util
——包含一些实用工具类。
Java的命名习惯
- 包名中的字母一律小写。如:
xxxyyyzzz
。 - 类名、接口名应使用名词,每个单词的首字母大写。如:
XxxYyyZzz
。 - 方法名,第一个单词小写,后面每个单词的首字母大写。如:
xxxYyyZzz
。 - 变量名,第一个单词小写,后面每个单词的首字母大写。
- 常量名中的每个字母一律大写。如:
XXXYYYZZZ
。
Java基础——Java语法基础(1)
Java代码基本格式
Java 中所有程序代码都必须存在于一个类中,用 class
关键字定义类,在 class
之前可以有一些修饰符。格式如下:
修饰符 class 类名
{
程序代码
}
注:
- Java 是严格区分大小写的。
- Java 程序中一句连续的字符串不能分开在两行中写。
Java程序的注释
Java 里的注释有三种类型:
- 单行注释
在注释内容前面加“//”,格式为:
代码; // 注释内容
- 多行注释 以斜杠加星号开头,以星号加斜杠结尾。
- 文档注释
以斜杠加两个星号开头,以一个星号加斜杠结束。
用这种方法注释的内容会被解释成程序的正式文档,并能包含进诸如
javadoc
之类的工具程序生成的文档里,用以说明该程序的层次结构及其方法。 补充: - 多行注释中可以嵌套“//”注释,但不能嵌套多行注释符号。
- 程序注释一般占程序代码总量的 20%-50%,"可读性第一,效率第二"。
Java中的标识符
Java 中的包、类、方法、参数、变量的名字,可以由任意顺序的大小写字母、数字、下划线(_)、美元符号($)组成,但不能以数字开头,不能是 Java 中的保留关键字。
Java的关键字
- 用于类和接口的声明:
class
,extends
,implements
,interface
- 包引入和包声明:
import
,package
- 数据类型:
byte
,boolean
,char
,double
,int
,long
,float
,short
- 某些数据类型的可选值:
false
,true
,null
- 流程控制:
break
,case
,continue
,default
,do
,else
,for
,if
,return
,switch
,while
- 异常处理:
catch
,finally
,throw
,throws
,try
- 修饰符:
abstract
,final
,native
,private
,protected
,public
,static
,synchronized
,transient
,volatile
- 操作符:
instanceof
- 创建对象:
new
- 引用:
this
,super
- 方法返回类型:
void
- 保留字:
const
,goto
Java中的常量
- 整形常量
- 十进制
- 十六进制——以
0x
或0X
开头 - 八进制——以
0
开头 - 长整形——以
L
(l
) 结尾
- 浮点数常量
- 单精度浮点数——后面加
f
(F
) - 双精度浮点数——后面加
d
(D
) 注: a. 小数常量的默认类型是double
型,所以float
类型常量后一定要加f
(F
)。 b. 浮点数常量可以用指数形式表示,如5.022e+23f
- 单精度浮点数——后面加
- 布尔常量
true
或false
- 字符常量
由英文字母、数字、转义序列、特殊字符等的字符所表示,如
'a'
、'\t'
等。 Java 中的字符占两个字节,是用 Unicode 码表示的,也可以使用'\u'
加 Unicode 码值来表示对应字符,如'\u0027'
。 常用的转义字符有:\t
——表示接受键盘输入,相当于按了一下回车键\n
——表示换行\t
——表示制表符,相当于 Tab 键\b
——表示退格键,相当于 Back Space 键\'
——表示单引号\"
——表示双引号\\
——表示反斜杠“\”
- 字符串常量 字符串常量用双引号括起来。
null
常量null
常量表示对象的引用为空。
Java的变量类型
基本数据类型之间的转换:
- 自动类型转换(隐式类型转换) 条件: a. 两种类型彼此兼容 b. 目标类型的取值范围要大于源类型
- 强制类型转换(显示类型转换) 格式:目标类型 常量 = (目标类型)值 注:字符串可以使用加号“+”同其他的数据类型相连而形成一个新的字符串。
变量的作用域
代码块决定了变量的作用域,作用域决定了变量的可见性和存在时间。
局部变量
在一个函数或函数里面的代码块中定义的变量称为局部变量。 局部变量在进行取值操作前必须被初始化或进行过赋值操作。
函数
- 定义函数的格式
返回值类型 函数名(参数类型 形式参数1,参数类型形式参数2,...) { 程序代码 return 返回值; }
- 函数的重载 函数的重载就是在一个类中可以同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。
Java基础——Java语法基础(2)——运算符
Java中的运算符
- 算术运算符
a. 字符串
+
其他类型 = 字符串 b. 如果对负数求余,可以把除数负号忽略不计,如5 % -1 = 1
。但如果被除数是负数就另当别论了。 - 赋值运算符
a. 在 Java 中,可以把赋值语句连在一起,如:
x = y = z = 5;
b.x += y
相当于x = x + y
- 比较运算符
a. 要注意比较运算符“==”和赋值运算符“=”的区别,特别是布尔型变量进行比较时。
b. 可以将比较运算的表达式写为“
false == 变量
”的形式,以防止误写为赋值运算。 - 逻辑运算符
a. 逻辑运算符用于对 boolean 型结果的表达式进行运算,运算的结果都是 boolean 型。
b. “
&&
”和“&
”的区别在于,如果使用前者连接,那么无论任何情况,“&&
”两边的表达式都会参与计算。如果使用后者连接,当“&&
”的左边为false
,则将不会计算其右边的表达式。“||
”和“|
”的区别与“&&
”和“&
”的区别一样。 - 位运算符
位运算——对数据按二进制位进行移位操作。
适用类型:
byte
,short
,char
,int
,long
位运算包括:&
位与|
位或^
位异或<<
左移,左移 n 位相当于乘以 2 的 n 次方>>
右移,右移 n 位相当于除以 2 的 n 次方>>>
无符号右移 注: a. 位运算符也可以与“=”赋值运算符组合产生新的赋值运算符,如:<<=
,>>=
等。 b. 移位不会改变变量本身的值,如a << 1
在一行语句中单独存在毫无意义。 c. 对低于int
型的操作数将先自动转换为int
型再移位;对int
型整数移位a << b
,系统先将b
对32
取模,得到的结果才是真正移位的位数;对于long
型整数移位时则是先将移位位数对64
取模。
运算符的优先级
编程技巧:
- 不要在一行中编写太复杂的表达式,可以将其分解为几条语句。
- 多用括号。
Java基础——Java语法基础(3)
程序控制流程
- 顺序结构 按顺序执行
- if条件语句
a.
if...
b.if...else...
可简写为:变量 = 布尔表达式 ? 语句1 : 语句2;
c.if...else if...else...
- switch选择语句
switch(表达式) { case 取值1: 语句块1; break; ... case 取值n: 语句块n; break; default: 语句块n+1; break; }
- while循环语句
while(条件表达式) { 执行语句 }
- do while循环语句
do { 执行语句 } while(条件表达式)
- for循环语句
for(初始化表达式;循环条件表达式;循环后操作表达式) { 执行语句 }
- 增强for循环
for (循环变量类型 循环变量名称 : 要被遍历的对象) { 执行语句 }
- break与continue语句
a. 一个无标号的
break
语句会把控制传回当前最内层循环(while
,do
,for
,switch
)的下一条语句。 b. 无标号的continue
语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。
数组
- 数组的定义
如:
int[] x = new int[100];
或int x[] = new int[100];
- 数组的静态初始化
如:
int[] aa = new int[] {3, 4, 5};
- 多维数组
如:
int[][] xx = new int[3][]; xx[0] = new int[3]; xx[1] = new int[2];
- 一些与数组相关的函数
a.
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
复制数组,将源数组srcPos
开始的length
个元素从目标数组的destPos
位置开始存储。 b.Arrays.sort()
数组升序排序
java中的语法是什么意思
语法就是编程语言的规则啊,例如 Java 中定义一个整数类型的变量:
int i = 10;
而在 JavaScript 里是这样的:
var i = 10;
例如在 Java 中写个方法(函数)是这样的:
public int getNumber() {
return i;
}
JavaScript 里是这样的:
function getNumber() {
return i;
}