java的语法,java的语法和c

发布时间:2023-01-09

本文目录一览:

  1. java的语法
  2. java基础语法部分有哪些
  3. [java 中的语法到底指的什么?](#java 中的语法到底指的什么?)
  4. java语法基础,具体内容
  5. java中的语法是什么意思

java的语法

  1. Object s=e.getSource(); // Object 是什么意思? Object 是 Java 世界中所有类的根类,即所有类的祖先,其他类都实现 Object 类中的方法。
  2. if(s instanceof JButton) // instanceof 是什么意思? A instanceof B:判断 A 是否是 B 的实例(具体的一个例子)。 举个例子就是:有的人是学生,有的人是老师,现在有个人想用学生的方法,但实例化这个人的时候实例化的是人,并不是学生(虽然你知道他是个学生),这怎么办呢?强转的话会报错,虚拟机认为不能把一个人强转成学生,这时候就应该用 instanceof 判断一下,看那个人是否是学生的实例,是的话,就可以强转,执行学生的方法。 例子有点绕,希望你能理解....
  3. JButton b=(JButton)s; // JButton 加括号是什么意思? 如果 sJButton 的实例(即 s 是一个 JButton),则执行这行代码,将 s 强转成 JButton
...
}

java基础语法部分有哪些

Java 的基础语法包括:

  1. 开发环境搭建
  2. 常量
  3. 变量
  4. 数据类型
  5. 运算符
  6. 选择结构 - if - switch
  7. 循环结构 - while - do-while - for 以及各种循环控制与多层嵌套循环
  8. 方法的设计与使用
  9. 数组
  10. 递归
  11. 冒泡排序、选择排序等多种排序
  12. 二分查找
  13. 线性查找

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 中,除了 staticfinalprivate 是静态绑定以外,所有方法一律按动态绑定处理。 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的内涵

  1. 是一种编程语言
  2. 是一套开发工具
  3. 是一个运行环境

Java应用平台

  1. J2EE(Java 2 Platform Enterprise Edition)——用于企业级应用程序的开发
  2. J2SE(Java 2 Platform Standard Edition)——用于普通标准应用程序的开发
  3. J2ME(Java 2 Platform Micro Edition)——用于小型消费类电子产品或嵌入式系统的开发 J2SE 包括 4 部分——JVM、JRE、JDK 与 Java 语言。

环境变量的设置

环境变量——在操作系统中定义的变量,可供操作系统上所有的应用程序使用。

  1. 查看环境变量 a. 命令提示行:环境变量的命令——set(环境变量名) b. 窗口方式:我的电脑-属性-高级-环境变量
  2. 设置 path 环境变量 path 环境变量的作用:设置操作系统寻找和执行应用程序的路径。
    JAVA_HOME:C:\Program Files\Java\jdk1.6.0_14
    path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
    
  3. 设置 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开发工具

  1. 记事本 注意保存时文件名应为 *.java
  2. UltraEdit、EditPlus 使用 EditPlus 编辑和编译 Java 程序,需要进行相应配置。选择“工具”-“参数选择”-“工具”-“用户工具”-“添加工具”-“应用程序”。首先设置“javac”的参数,具体如下图,其中“命令”为 javac.exe 文件的地址。 然后设置“java”的参数,如下图所示,其中“命令”为 java.exe 文件的路径。 设置好后默认“javac”工具的快捷键为 Ctrl+1,“java”工具的快捷键为 Ctrl+2。当编辑好 Java 源程序后,使用 Ctrl+1 即可对其进行编译,然后按 Ctrl+2 运行程序。如下图所示:
  3. 集成开发环境——Eclipse、MyEclipse、JBuilder 等。 关于 Eclipse 和 MyEclipse,刚用的时候感觉二者差不多,查了资料才知道 Eclipse 是基础,如同操作系统;而 MyEclipse 是在 Eclipse 上面运行的程序,不过进行了增强并提供了新功能。 以前用过 Microsoft 的 Visual Studio 2005,个人感觉 VS2005 是一个功能非常强大的集成开发环境,不过 .NET 和 Java 毕竟不是一家人,学 Java 还是要用 Eclipse 的。

JDK中的常用包

  1. java.lang——包含一些 Java 语言的核心类,如 StringMathThreadSystemInteger 类等。
  2. java.awt——包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面(GUI)。
  3. java.applet——包含 applet 运行所需的一些类。
  4. java.net——包含执行与网络相关操作的类。
  5. java.io——包含能提供多种输入/输出功能的类。
  6. java.util——包含一些实用工具类。

Java的命名习惯

  1. 包名中的字母一律小写。如:xxxyyyzzz
  2. 类名、接口名应使用名词,每个单词的首字母大写。如:XxxYyyZzz
  3. 方法名,第一个单词小写,后面每个单词的首字母大写。如:xxxYyyZzz
  4. 变量名,第一个单词小写,后面每个单词的首字母大写。
  5. 常量名中的每个字母一律大写。如:XXXYYYZZZ

Java基础——Java语法基础(1)

Java代码基本格式

Java 中所有程序代码都必须存在于一个类中,用 class 关键字定义类,在 class 之前可以有一些修饰符。格式如下:

修饰符 class 类名
{
    程序代码
}

注:

  1. Java 是严格区分大小写的。
  2. Java 程序中一句连续的字符串不能分开在两行中写。

Java程序的注释

Java 里的注释有三种类型:

  1. 单行注释 在注释内容前面加“//”,格式为:
    代码;    // 注释内容
    
  2. 多行注释 以斜杠加星号开头,以星号加斜杠结尾。
  3. 文档注释 以斜杠加两个星号开头,以一个星号加斜杠结束。 用这种方法注释的内容会被解释成程序的正式文档,并能包含进诸如 javadoc 之类的工具程序生成的文档里,用以说明该程序的层次结构及其方法。 补充:
  4. 多行注释中可以嵌套“//”注释,但不能嵌套多行注释符号。
  5. 程序注释一般占程序代码总量的 20%-50%,"可读性第一,效率第二"。

Java中的标识符

Java 中的包、类、方法、参数、变量的名字,可以由任意顺序的大小写字母、数字、下划线(_)、美元符号($)组成,但不能以数字开头,不能是 Java 中的保留关键字。

Java的关键字

  1. 用于类和接口的声明:class, extends, implements, interface
  2. 包引入和包声明:import, package
  3. 数据类型:byte, boolean, char, double, int, long, float, short
  4. 某些数据类型的可选值:false, true, null
  5. 流程控制:break, case, continue, default, do, else, for, if, return, switch, while
  6. 异常处理:catch, finally, throw, throws, try
  7. 修饰符:abstract, final, native, private, protected, public, static, synchronized, transient, volatile
  8. 操作符:instanceof
  9. 创建对象:new
  10. 引用:this, super
  11. 方法返回类型:void
  12. 保留字:const, goto

Java中的常量

  1. 整形常量
    • 十进制
    • 十六进制——以 0x0X 开头
    • 八进制——以 0 开头
    • 长整形——以 L (l) 结尾
  2. 浮点数常量
    • 单精度浮点数——后面加 f (F)
    • 双精度浮点数——后面加 d (D) 注: a. 小数常量的默认类型是 double 型,所以 float 类型常量后一定要加 f (F)。 b. 浮点数常量可以用指数形式表示,如 5.022e+23f
  3. 布尔常量 truefalse
  4. 字符常量 由英文字母、数字、转义序列、特殊字符等的字符所表示,如 'a''\t' 等。 Java 中的字符占两个字节,是用 Unicode 码表示的,也可以使用 '\u' 加 Unicode 码值来表示对应字符,如 '\u0027'。 常用的转义字符有:
    • \t——表示接受键盘输入,相当于按了一下回车键
    • \n——表示换行
    • \t——表示制表符,相当于 Tab 键
    • \b——表示退格键,相当于 Back Space 键
    • \'——表示单引号
    • \"——表示双引号
    • \\——表示反斜杠“\”
  5. 字符串常量 字符串常量用双引号括起来。
  6. null 常量 null 常量表示对象的引用为空。

Java的变量类型

基本数据类型之间的转换:

  1. 自动类型转换(隐式类型转换) 条件: a. 两种类型彼此兼容 b. 目标类型的取值范围要大于源类型
  2. 强制类型转换(显示类型转换) 格式:目标类型 常量 = (目标类型)值 注:字符串可以使用加号“+”同其他的数据类型相连而形成一个新的字符串。

变量的作用域

代码块决定了变量的作用域,作用域决定了变量的可见性和存在时间。

局部变量

在一个函数或函数里面的代码块中定义的变量称为局部变量。 局部变量在进行取值操作前必须被初始化或进行过赋值操作。

函数

  1. 定义函数的格式
    返回值类型 函数名(参数类型 形式参数1,参数类型形式参数2,...)
    {
        程序代码
        return 返回值;
    }
    
  2. 函数的重载 函数的重载就是在一个类中可以同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。

Java基础——Java语法基础(2)——运算符

Java中的运算符

  1. 算术运算符 a. 字符串 + 其他类型 = 字符串 b. 如果对负数求余,可以把除数负号忽略不计,如 5 % -1 = 1。但如果被除数是负数就另当别论了。
  2. 赋值运算符 a. 在 Java 中,可以把赋值语句连在一起,如:x = y = z = 5; b. x += y 相当于 x = x + y
  3. 比较运算符 a. 要注意比较运算符“==”和赋值运算符“=”的区别,特别是布尔型变量进行比较时。 b. 可以将比较运算的表达式写为“false == 变量”的形式,以防止误写为赋值运算。
  4. 逻辑运算符 a. 逻辑运算符用于对 boolean 型结果的表达式进行运算,运算的结果都是 boolean 型。 b. “&&”和“&”的区别在于,如果使用前者连接,那么无论任何情况,“&&”两边的表达式都会参与计算。如果使用后者连接,当“&&”的左边为 false,则将不会计算其右边的表达式。“||”和“|”的区别与“&&”和“&”的区别一样。
  5. 位运算符 位运算——对数据按二进制位进行移位操作。 适用类型:byte, short, char, int, long 位运算包括:
    • & 位与
    • | 位或
    • ^ 位异或
    • << 左移,左移 n 位相当于乘以 2 的 n 次方
    • >> 右移,右移 n 位相当于除以 2 的 n 次方
    • >>> 无符号右移 注: a. 位运算符也可以与“=”赋值运算符组合产生新的赋值运算符,如:<<=, >>= 等。 b. 移位不会改变变量本身的值,如 a << 1 在一行语句中单独存在毫无意义。 c. 对低于 int 型的操作数将先自动转换为 int 型再移位;对 int 型整数移位 a << b,系统先将 b32 取模,得到的结果才是真正移位的位数;对于 long 型整数移位时则是先将移位位数对 64 取模。

运算符的优先级

编程技巧:

  1. 不要在一行中编写太复杂的表达式,可以将其分解为几条语句。
  2. 多用括号。

Java基础——Java语法基础(3)

程序控制流程

  1. 顺序结构 按顺序执行
  2. if条件语句 a. if... b. if...else... 可简写为:变量 = 布尔表达式 ? 语句1 : 语句2; c. if...else if...else...
  3. switch选择语句
    switch(表达式)
    {
        case 取值1:
            语句块1;
            break;
        ...
        case 取值n:
            语句块n;
            break;
        default:
            语句块n+1;
            break;
    }
    
  4. while循环语句
    while(条件表达式)
    {
        执行语句
    }
    
  5. do while循环语句
    do
    {
        执行语句
    } while(条件表达式)
    
  6. for循环语句
    for(初始化表达式;循环条件表达式;循环后操作表达式)
    {
        执行语句
    }
    
  7. 增强for循环
    for (循环变量类型 循环变量名称 : 要被遍历的对象)
    {
        执行语句
    }
    
  8. break与continue语句 a. 一个无标号的 break 语句会把控制传回当前最内层循环(while, do, for, switch)的下一条语句。 b. 无标号的 continue 语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。

数组

  1. 数组的定义 如:int[] x = new int[100];
    int x[] = new int[100];
  2. 数组的静态初始化 如:int[] aa = new int[] {3, 4, 5};
  3. 多维数组 如:
    int[][] xx = new int[3][];
    xx[0] = new int[3];
    xx[1] = new int[2];
    
  4. 一些与数组相关的函数 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;
}