是指java虚拟机(JVM),在不同的操作系统上安装jvm,然后程序运行在JVM
JRE:是JAVA运行时环境,包括其JVM和运行时所需要的核心类库
JDK:是JAVA程序开发工具包,包含JRE和开发人员使用的工具
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
1bit表示1位
1B=8b 表示一个字节
1024B=1KB
1024KB=1M
1024M=1G
浮点数是有点的离散,存在舍入误差。接近但不等于。
解决:Bigdecimal 类
所有的字符本质就是数字,涉及到Uniconde编码表
低--------------------------------------------------高
byte->short>char->int>long->float->double(小数优先级高于整数)
在运算中不同的数据类型要先转成统一的数据类型
自动类型转换:低->高
int类型以下的运算其结果为int类型
int类型以上存在最高什么类型结果就为什么类型
强制类型转换:高->低
变量是什么:就是可以变化的量
Java是一种强类型语言,每个变量都必须声明其类型
Java变量是程序中最进本的存储单元,其要素包括变量名,变量类型和作用域
注意事项:
常量:初始化之后不可在改变的值。在被设定后,在程序运行中不可在改变。
关键字:final 常量名=值 (常量名为大写字符)
为了更好的组织类,Java提供了宝鸡至,用于区别类名的命名空间
一般李永公司域名倒置作为包名
package
为了使用包类的某个成员,我们需要在Java程序中明确导入包
import
Java的基本结构就是顺序结构,除非特别指明,否则就按顺序一句一句执行
顺序结构是最简单的算法结构,它是任何一个算法都离不开的基本算法结构
if(布尔表达式){
}
if(布尔表达式){
}else{
}
if(布尔表达式){
} else if(布尔表达式){
}else if(布尔表达式){
}else{
}
switch case 语句判断一个变量与一系列值中某个值相等,每个值称为一个分支。
switch 语句中的变量类型可以是:byte、short、int或者char,JavaSE7后switch支持字符串String类型
无break,则会造成case穿透。
switch(expression){
case value:
break;
case value:
break;
default:
}
当表达式为true,循环会一直执行下去;当表达式不成立时,循环停止。
while(布尔表达式){
循环内容
}
至少循环执行一次后进入条件判断
do{
}while(布尔表达式)
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
for(初始化;布尔表达式;更新){
循环内容
}
声明语句:声明新的不变量,该变量的类型必须和数组元素的类型匹配
表达式:表达式要访问的数组名,或者是返回值为数组的方法。
for(声明语句:表达式){
}
for(item:array){
}
方法的本意是功能模块,就是实现某个功能的代码片段。方法包含于类或对象中,
我们设计的方法最好保持方法的原子性,就是一个方法只完成一个功能,这样利于后期的扩展。
修饰符 返回值类型 方法名(参数类型 参数名){
。。。
方法体
。。。
return 返回值;
}
修饰符:定义了该方法的访问类型
返回值类型:方法可能返回值,当无返回值时可使用void
方法名:方法的实际名称
参数类型:参数像是一个占位符。放方法被调用时。传递值给参数,这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含参数;
方法体:方法体包含具体的语句,定义该方法的功能。
值传递&&引用传递
引用传递:引用传递中形参实参指向同一个对象,形参的操作会改变实参对象的改变
值传递:无论是基本类型和是引用类型,在实参传入形参时,都是值传递,也就是说传递的都是一个副本,而不是内容本身
结果:java只有值传递
重载就是在一个类中,有相同的函数名称,但形参不同的函数
方法重载的规则:
JDK1.5开始,Java支持可变参数。
在方法声明中,在指定参数类型后加一个省略号(…)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。
本质:数组
testNum(1,2);
public static void testNum(int...i){
System.out.println(i.length);
//2
}
数组:相同数据类型的有序集合
数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成。
其中,每一个数据称为一个数据元素,每个数组元素可以通过下标来访问他们
【0,数组.length】
超过边界:ArrayIndexOutOfBoundsException : 数组下标越界异常!
面向对象编程(Object-Oriented Programming ,OOP)
面向对象的本质:以类的方式组织代码,以对象的方式组织数据。
三大特性
核心思想:高内聚,低耦合
属性私有get/set
目的:禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问
优点:
本质:是对某一批类的抽象,从而实现对现实世界更好的建模
关键字:extends
java类只有单继承,没有多继承。所有的类默认都继承Object
子类重写父类方法
即同一方法可以根据发送对象的不同而采用不同的行为方式
多态存在的条件:
static 同类一起加载。只加载一次。
匿名 每次创建类就加载一次。
{} // 匿名代码块
static {} // 静态代码块
可以直接导入到静态方法,程序可直接使用方法名去使用。
import static java.lang.Math.random
关键字 abstract
可以用来修改方法(抽象方法)也可以修饰类(抽象类),抽象类中可以没有抽象方法,但是有抽象方法一定是抽象类。
只有规范
关键字 interface
定义的方法默认修饰都是:public abstract
定义的都是常量默认修饰都是:public static final
就是在一个类的内部定义一个类
public class Outer {
private String name;
private int age;
public class Inner{
public void testIn(){
System.out.println("这是一个内部方法");
}
}
}
// 创建
Outer outer=new Outer();
Outer.Inner inner = outer.new Inner();
public class Outer {
private String name;
private int age;
public static class Inner{
public void testIn(){
System.out.println("这是一个内部方法");
}
}
}
public class Outer {
private String name;
private int age;
public void testMethod(){
class Inner{
public void testIn(){
System.out.println("这是一个内部方法");
}
}
}
}
public interface Runnable {
public abstract void run();
}
new Runnable() {
@Override
public void run() {
}
};
最具代表的检查性异常是用户错误或问题引起的异常,这是程序猿无法预见的。例如要打开一个不存在文件时,一个异常就这样发生了,这些异常在编译时不能简单的忽略。
运行异常是可被程序猿避免的异常,与检查性相反,运行时异常可以在编译时被忽略。
错误不是异常,二十脱离程序猿控制的问题。错误在代码中尝尝没忽略。
Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
Java虚拟机运行错误,当JVM不再继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机一般会选择线程终止。
还有发生在虚拟机视图执行应用时。如类定义错误、链接错误。这些错误是不可查的。因为它们在应用程序的控制和处理能力之外,而且绝大多是程序运行时不允许出现的状况。
在Exception分支中有一个重要的子类RuntimeException(运行时异常)
Error通常是灾难性的致命错误,是程序无法控制和处理的。出现这些异常时,Java虚拟机一般会选择终止线程;
Exception通常情况下可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。