Java简介:
Java由詹姆斯.高斯林(James Gosling)带领团队开发,应用于家用电器,因为家电用器由很多不同的计算机处理器控制的,所以Gosling设计语言需要适应所有这些不同的处理器,为了简化编译,Gosling设计了中间语言,独立于所有的家电类型,中间语言即字节码(Java byte-code),然后由Java VM进行运行。
字节码和Java虚拟机:
计算机能直接识别和执行的语言为机器语言,而Java语言是高级语言,编译器就是将高级语言转换成计算机可以直接识别的机器语言,一般的程序就是通过编译器将代码转换,例如C,C++,但是Java语言为了做到可移植性,将Java转换成字节码,字节码与各个平台独立,只需在JVM上运行即可。
Java将字节码转换成机器语言:
解释器和JIT(Just-In-Time)即时编译器
错误类型:
语法错误:标点符号,关键字拼写,语法规则等错误;
运行时错误:直到运行时才检查到的错误;
逻辑错误:算法上的错误,处理事务的逻辑出错,可以通过编译和运行。
Java的数据类型:
原始类型:char ,short,int,long,float,double,boolean,byte,
断言:assert表明程序状态的句子,断言必须是一个非true即false的句子,程序中没有错误的时候应该是true,
随机数的生成:
Java.util.Random类,Math.random()方法.
形参和实参:
实参即在进行方法调用的时候的参数,即还没有进入方法;
形参即在方法中使用传入的参数,形参分两种:如果参数是原始类型的参数,则传递的是实参的副本,按值传递,即方法中形参的改变和实参没有关系,函数执行完毕后,形参就会被销毁,如果传递的是引用类型,则修改会反应到实际对象上。
参数引用:严格的讲,Java中所有的参数都是按值调用参数,任何类型参数插入一个实参时,将其值传递给形参用于参与运算,原始类型传递的是值,而类参数传递的也是值,只不过这个值是一个内存地址。
This关键字:
在方法内部使用This关键字,this关键字代表的对象为方法所处对象的本身,This可以实现对其他方法和变量的访问,在类中,类中的实例对象或另一个方法没有使用任何调用对象,this就会被视为调用对象.
封装:
将数据和操作结合到一个单独的项目中,并且隐藏执行细节。例如一个类中各个方法,对实际的操作进行了隐藏,只需调用类的方法就可以实现业务处理;通过权限修饰符,来限制访问的成员,实现了成员的隐藏,从更高的角度出发,接口就是一个封装,封装了具体的实现细节,对外只提供方法名,实现了具体细节的隐藏。
原始类型的变量保存的是该类型的值,类类型变量并不保存该类的对象,存储的是位于计算机内存中位置的引用,即内存地址.
一个方法无法修改作为该方法形参的原始类型变量的值,即对于基本数据类型,传递的是该值的副本,对于基本类型实参的值,是不会发生变化,但是可以修改类类型形参的实例变量的值。
==运算符:检查内存地址是否相等.
深拷贝和浅拷贝:
深拷贝拷贝的对象是与原始对象没有相同引用的拷贝。Java使用的拷贝是浅拷贝。
Classpath:
一个特殊的环境变量,用于定位jar包,即按照classpath指定的路径搜索所需要加载的jar包,java加载时,会去classpath路径中查找jar包,
编译时指定类路径: java -classpath .;c:\lib\numeric;c:\othersutff yourclasss.java
数组是引用类型,数组类型的变量保存着数组变量被保存在内存中的地址,这个内存地址被称为数组对象的引用。
Main方法的参数:
是一个String类型的数组,他的参数分别代表 类名,参数1 ,参数2 ,参数…
可变参数的方法:ex: int max(int … arg){}
Final修饰符:在类前使用final,表示这个类不能被继承;在方法前使用final,表示这个方法不能被重写.
重写和重载:
重写是在继承的基础上,重写的方法和原方法有相同的参数数量和类型,不可以将重写方法的权限缩小,不可以让派生类中受到更多的限制,可以将private修改成public.
重载是在一个类中,方法的参数不同,返回值不同的同名方法.
使用super()和this()方法的构造函数:
调用基类构造器函数,使用super关键字作为基类构造器函数的名字;
调用同一个类中其他构造函数可以使用this关键字作为调用同一个类中构造函数的方法名。
继承是继承父类的公有属性,方法,实例变量,静态变量和静态方法。
Protected修饰符:可以在自己的类定义,派生类的定义,同一个包的任何类定义中通过名称访问他。
Instanceof和getClass():
Instanceof运算符和getClass方法都可以用于检查一个对象的类,instanceof 运算符简单的检查对象的类型,getClass()方法与== ,!= 一起使用,用于检查两个对象是否是同一个类创建的.
多态:
绑定:将方法定义与方法调用相关联的过程,如果方法定义与方法调用在代码被编译时是关联的,就被称为前期绑定,如果方法定义和方法调用在被调用时时关联的,就称为后期绑定或动态绑定.Java是后期绑定,多态,是指通过后期绑定机制,给一个方法关联多个含义的能力。
Throws用于声明异常,
流:一个流是一个数据流,就是一个连续的数据串,注意输入输出流的参考对象,所谓的输入输出是相对的,将数据读入内存就是输入流,将程序输出到输出设备,例如显示器就是输出流
ArrayList类:类似于数组且具有能改变长度的功能,ArrayList缺点:效率没有数组高,使用起来复杂,ArrayList的基本类型必须是类类型,而不能是基本类型,同时不是线程安全的。创建ArrayList与其他对象的方式一样,唯一区别在于需要指定ArrayList的基本类型。
泛型:从5.0开始,Java允许参数化类型的类和方法的定义,这种定义叫做泛型。可以定义带有类型参数的类,这种类叫做泛型类或者参数化的类,可以使用任何非关键字标识符作为类型参数,按照规定,类型参数是一个大写字母开头的。
当类型参数在类名的后面时,ex: public class Sample<T>{ …} 这个T是整个类的类型参数,
当类型参数在所有修饰符的后面和返回类型的前面,在调用的时候,在方法名的前面的尖括号中加上要替换类型参数的类型,ex: String midString = Utility.<String>getMidpoint(b),它只是getMidpoint方法的类型参数.
Set和List:
Set的常用子类有TreeSet,HashSet,
List的常用子类有ArrayList,LinkedList,
ArrayList<?>:可以带有任何基本类型的ArrayList<T>;
ArrayList<T>:这个基本类型限定为除过基本类型,因为ArrList中不可以存放基本类型,只能存放引用类型;
ArrayList<Object>:参数类型只能是对象;
Map:指一个键值对,key->value,
Map<K,V>接口常用的实现类是HashMap<K,V>,TreeMap<K,V>;
内容如果纰漏,敬请指出,谢谢学习,共勉!!!