java的核心优势:可移植/跨平台能力
各版本的含义:javase 标准版,定位在个人计算机上的应用 javaEE企业版,定位在服务器端的使用 javaME微型版,定位在消费级电子产品的应用上
包含关系:javaEE完全包含javaSE,javaME和前两个版本只有核
java的优点:可移植、安全性、面向对象、简单性、高性能、分布式、多线程
java的运行机制:先用编译器将java文件编译为字节码文件,再用虚拟机(解释器)解释执行
JVM JRE JDK的区别:
JVM是最基本的虚拟机
JRE是虚拟机+库函数+运行程序所需的文件
JDK在JRE的基础上增加编译器和调试器
java是面向对象的语言,所有代码必须位于类里面
一个源文件中至多只能声明一个public的类,其他的个数不限,如果源文件中有public的类,那么文件名必须与public的类名相同
与C语言一样,main方法是java程序的入口方法,有固定的书写格式:public static void main (String[] args){...}
常见的Java集成开发环境有三个:eclipse、IntelliJ IDE、NetBeans
基础部分:
三种注释方法:// /* */ /** **/(用于文档注释)
声明常量关键字 final
基本数据类型:byte short int long float double char boolean string,需要注意,java中的布尔型变量只有一位,不能是0和1(区分与C)
浮点型变量的声明注意事项:数后需要+F或者L来区分整形与浮点型变量
另外,需要注意整型转换浮点型变量时的精度丢失问题,而且尽量不要用浮点型变量作比较运算,必须要用的话使用BIgDecimal库进行计算
逻辑运算符需要注意的事项:&逻辑与 |逻辑或 !逻辑非 &&短路与 ||短路或 ^异或
短路与、短路或表示只要出现第一个符合结果的条件,就不继续运行检查后面的条件,可以用来提高效率
字符串连接符:+ ,要注意数字与字符使用连接符时候的执行顺序
eg:System.out.println(1+2+3+"a") 输出6a
选择运算符:A条件?B语句:C语句
自动类型转换丢失精度的情况:int转换float,long转换float,long转换double
强制类型转换:eg:(int)A参数
键盘输入与输出方法:使用java.util.Scanner库,创建Scanner对象,调用对象中的scanner.nextLine方法,即可读到键盘输入
eg:Scanner scanner = new Scanner(System.in);
控制语句部分:与C语言相同
方法和C语言的函数相似,它从属与类和对象,java程序的基本单位是类
方法的重载:java中允许相同名称但是变量类型或者变量数量不同的方法同时存在,调用时通过输入的参数来判断调用的是哪一个方法
对于类、对象的理解:类是根据实际需求所自订的模板,通过对类实体化得到对象,对象由属性和方法、构造器组成
构造方法:
构造器也加构造方法,用于对象的初始化,它会在创建对象时被自动调用,目的是对象的初始化,构造器的名称必须与类的名称一致,如果没有定义构造器,编译器会自动定义一个无参数的构造函数,如果有则不会自动添加
构造方法的重载:跟方法的重载类似,通过创建名称相同,参数不同的方法来实现
示例代码:
class Point {
double x, y;
public Point(double _x, double _y) {
x = _x;
y = _y;
}
public double getDistance(Point p) {
return Math.sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
}
}
public class TestConstructor {
public static void main(String[] args) {
Point p = new Point(3.0, 4.0);
Point origin = new Point(0.0, 0.0);
System.out.println(p.getDistance(origin));
}
}
(用于计算两点之间距离)
this关键字:用于确定使用的是哪一个相同名称的变量(位于方法内部还是对象内部)