1、Java从入门到放弃一二三四Java:从入门到放弃(一)面向对象就是对面向过程的封装java语言发展史SUN(Stanford University Network 斯坦福大学网络公司)1995年5月23日,java语言诞生1996年1月JDK1.01998年12月JDK1.2(将java分成了J2SE,J2EE,J2ME)2004年10月JDK1.5(改名javaSE5.0)2009年4月20日,甲骨文74亿美元收购SUN公司什么是JVMJVM(Java Virtual Machine)是java虚拟机,java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此java语言可以跨平台。什么
2、是JRE包括Java虚拟机和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。什么是JDKJDK是提供给Java开发人员使用的,其中包含了java的开发工具(编译工具javac.exe打包工具jar.exe等),也包括了JRE。十进制和二进制数据之间的转换计算十进制数据转成二进制数据:使用除以2获取余数的方式二进制数据转成十进制数据:使用8421编码的方式计算机存储单元无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写字母b来表示。(二进制中,每一个0或者每一个1,都是一个比特)而计算机最小的存
3、储单元叫“字节(byte)”,通常用大写字母B来表示。 1B=8b 1KB=1024B常用DOS命令查看当前文件夹 dir进入文件夹命令 cd 文件夹名退出到磁盘根目录 cd清屏 cls三种注释/ 单行注释/* 多行注释*/* 文档注释*/关键字keywords在程序中,java已经定义好的单词,具有特殊含义(全部都是小写字母)标识符定义规则1、可以包含26个英文字母(区分大小写)、数字、$和_2、不能以数字开头3、不能是关键字java中四类八种基本数据类型数据类型 关键字 内存占用 取值范围 字节型 byte 1个字节 -128127 短整型 short 2个字节 -3276832767 整
4、型 int(默认) 4个字节 -231次方2的31次方-1 长整型 long 8个字节 -2的63次方2的63次方-1 单精度浮点数 oat 4个字节 1.4013E-453.4028E+38 双精度浮点数 double(默认) 8个字节 4.9E-3241.7977E+308 字符型 char 2个字节 0-65535 布尔类型 boolean 1个字节 true,false long类型:建议数据后加L表示oat类型:建议数据后加F表示Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换自动类型转换:将取值范围小的类型自动提升为取值范围大的类型
5、 范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为intbyte、short、char intlongfloatdouble强制类型转换:将取值范围大的类型强制转换成取值范围小的类型常用ASCLL码字符 数值 0 48 A 65a 97 变量前+ :先自加再赋值变量后+ :先赋值再自加位运算符:直接对二进制进行计算的移n位,就是乘以或除以2的n次幂n:相当于除以2的n次幂&和&的区别1.&和&都可以用作逻辑与(and)的运算符,当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。2.&还
6、具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式。= =与 equals 的区别= =和 equals 都是比较的,而前者是运算符,后者则是一个方法,结果都是 boolean 类型的。基本数据类型和引用数据类型都可以使用运算符= =,如果是基本数据类型,比较的是= =两边的值,如果是引用数据类型,比较的是引用变量指向的那个地址值。而只有引用类型数据才可以使用 equals,equals 方法是用于比较两个独立对象的内容是否相同。如果是比较字符串的内容是否相同就用 equals 方法。switch中case穿透问题在switch语句中,如果case的后面不写break,将
7、出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束switch(表达式)case 常量:语句;break; default:语句;break;Java:从入门到放弃(二)访问控制权限1.private属于私有访问权限,可以用在属性的定义、方法的声明上,一旦使用了private关键字声明,则只能在本类中进行访问。2.default(默认)访问权限,如果一个类中的属性或方法没有使用任何的访问权限声明,则就是默认的访问权限,默认的访问权限可以被本包中的其他类所访问,但是不能被其他包的类所访问。3.protected属于受保护的访问权限,一个类
8、中的成员如果使用了protected访问权限,则只能被本包及不同包的子类访问。4.public属于公共访问权限,如果一个类中的成员使用了public访问权限,就可以在所有类中被访问,不管是否在同一个包中。数组概念:数据就是存储数据长度固定的容器,保证多个数据类型要一致。数组的定义数据类型 数组名=new 数据类型长度; =new 数据类型元素1,元素2; =元素1,元素2;定义类,就是定义类的成员,包括成员变量和成员方法。成员变量的默认值数据类型 默认值整数(byte,short,int,long) 0浮点数(float,double) 0.0字符(char) u0000布尔(boolean)
9、 false数组、类、接口 null成员变量和局部变量的区别成员变量默认初始化,局部变量必须赋值才能使用成员变量在堆内存中,局部变量在栈内存中构造方法的定义方法名与类名相同,首字母大写,没有返回值类型Scanner类:一个可以解析基本类型和字符串的简单文本扫描器Scanner sc=new Scanner(System.in);int i=sc.nextInt();String s=sc.next();匿名对象:没有变量名的对象创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。Random类:该类的实例用于生成伪随机数Random
10、 r=new Random();int i=r.nextInt();ArrayList类大小可变的数组的实现,存储在内的数据称为元素。ArrayList list=new ArrayList();public boolean add(E e):将指定的元素添加到此集合的尾部。public Eremove(int index):移除此集合中指定位置上的元素。返回被删除的元素。public E get(int index):返回此集合中指定位置上的元素。返回获取的元素。public int size():返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。基本类型 基本类型包装类byte
11、 Byteshort ShortintIntegerlong Longfloat Floatdouble DoublecharCharacterboolean BooleanString类字符串不变:字符串的值创建后不能改变。构造方法public String():初始化新创建的String对象,以使其表示空字符序列。public String(char value):通过当前参数中的字符数组来构造新的String。public String(byte bytes):通过使用平台的默认字符集解码当前参数中的字符数组来构造新的String。判断功能的方法public boolean equals
12、(Object anObject):将此字符串与指定对象进行比较。public boolean equalsIgnoreCase(String anotherString):将此字符串与指定对象进行比较,忽略大小写。获取功能的方法public int length():返回此字符串的长度public String concat(String str):将指定的字符串连接到该字符串的末尾。public char charAt(int index):返回指定索引处的char值。public int indexOf(String str):返回指定子字符串第一次出现在该字符串内的索引。public
13、String subString(int beginIndex):返回一个字符串,从beginIndex开始截取字符串到字符串结尾。public String subString(int beginIndex,int endIndex):返回一个子字符串(左闭右开)。转换功能的方法public char toCharArray():将此字符串转换为新的字符数组。public byte getBytes():使用平台的默认字符集将该String编码转换为新的字节数组。public String replace(CharSequence target,CharSequence replacemen
14、t):将与target匹配的字符串使用replacement字符串替换。CharSequence是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。分割功能的方法public String split(String regex):将此字符串按照给定的regex(规定)拆分为字符串数组。static关键字被static修饰的成员可以并且建议通过类名直接访问。静态代码块:定义在成员位置,使用static修饰的代码块执行:随着类的加载执行且仅执行一次,优先于main方法和构造方法执行Arrays类public static String toString(int a):返
15、回指定数组内容的字符串表示形式public static void sort(int a):对指定的int型数组按数字升序进行排序Math类public static double abs(double a):返回double值的绝对值public static double ceil(double a):返回大于等于参数的最小的整数public static double floor(double a):返回小于等于参数最大的整数public static long round(double a):返回最接近参数的long(相当于四舍五入)Java:从入门到放弃(三)Java 中 4 个系统
16、定义的常量:NaN 非数值、lnf 无穷大、-lnf 负无穷大、null 空。继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。好处:1.提高了代码的复用性。2.类与类之间产生了关系,是多态的前提。子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用super关键字。父类中的成员变量私有时,子类是不能直接访问的,可以通过父类中提供的公共的get和set方法。子类对象调用方法时,会优先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。方法重
17、写:子类中出现与父类一模一样的方法时,会出现覆盖效果,也称为覆写。(声明不变,重新实现)子类可以根据需要,定义特定于自己的行为,即沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。重写的注意事项1.必须要保证子类方法权限大于等于父类权限2.函数名和参数列表一模一样3.子类方法的返回值必须小于等于父类方法的返回值范围super:代表父类的存储空间标识(父类的引用)this:代表当前对象的引用每次创建子类对象时,先初始化父类空间,再创建子类对象本身,如果父类成员非private修饰,则子类可以随意使用父类成员。子类构造方法调用时,一定先调用父类的构造方法。(子类的每个构造方
18、法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super()。super()和this()都必须是在构造方法的第一行,所以不能同时出现。)抽象类我们把没有方法主体的方法称为抽象方法,把包含抽象方法的类称为抽象类。修饰符 abstract 返回值类型 方法名 (参数列表);继承抽象类的子类必须重写父类所有的抽象方法,否则该子类也必须声明为抽象类。抽象类中也可以有构造方法,是供子类创建对象时,初始化父类成员使用的。未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。接口:Java语言中的一种引用类型接口的内部主要就是封装了方法,包
19、含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。接口使用interface关键字定义,它也会被编译成.class文件,但是它和类不是同一种引用数据类型。接口不能创建对象,实现接口的类需要实现接口中所有的抽象方法,否则它必须是一个抽象类。抽象方法:public abstract 返回值类型 方法名(参数列表);/默认public abstract默认方法:public default 返回值类型 方法名(参数列表)/默认public 静态方法:public static 返回值类型 方法名(参数列表)/默认public,只能通过接口名调用私有方法:只有默
20、认方法可以调用私有静态方法:默认方法和静态方法可以调用接口的多实现:在继承体系中,一个类中只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接口的多实现。在接口的多实现中,如果抽象方法有重名的,只需要重写一次。如果默认方法有重名的,必须重写一次。接口中存在同名的静态方法不会冲突。继承的优先级高于实现。多态:同一行为具有不同的表现形式当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后的方法。引用类型转换向上转型:子类类型向父类类型向上转换的过程向下转型:父类类型向子类类型向下转换的过程(要求是已经向上转型的子类对象,将父类引用
21、转为子类引用)instanceof关键字变量名 instanceof 数据类型如果变量属于该数据类型,返回true,如果变量不属于该数据类型,返回false.final关键字修饰类:被修饰的类不能被继承修饰方法:被修饰的方法不能被重写修饰变量:被修饰的变量不能被重新赋值对于final修饰的成员变量,要么直接赋值,要么通过构造赋值,只能二者选其一。引用类型的局部变量被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部成员变量值的修改。代码块普通代码块:直接在方法或者是语句中定义的代码块构造代码块:直接写在类中的代码块,每次实例化对象都会执行构造块中的代码,而且优于构造方法执行
22、静态代码块:静态代码块优先于主方法执行,而且只执行一次类的权限修饰符外部类:public/(default)成员内部类:public/protected/(default)/private局部内部类:什么都不能写内部类:将一个类定义在另一个类里面成员内部类:定义在类中方法外的类访问特点:内部类可以直接访问外部类的成员,包括私有成员。外部类要访问内部类的成员,必须要建立内部类的对象。内部类对象格式:外部类名.内部类名 对象名=new 外部类型().new 内部类型();内部类仍然是一个独立的类,在编译之后内部类会编译成独立的.class文件,但是前面冠以外部类的类名和$符号。匿名内部类:本质是一
23、个带具体实现的父类或者父接口的匿名的子类对象。(匿名内部类必须继承一个父类或实现一个父接口)局部内部类:如果一个类是定义在一个方法内部,那么这就是一个局部内部类。(只有当前所属的方法才能使用它,出了这个方法就不能用了)如果希望访问所在方法的局部变量,那么这个局部变量必须是有效final的(从java8开始,只要局部变量事实不变,final关键字可以省略)new 父类名(父接口名)()/方法重写;Java:从入门到放弃(四)Object类java.lang.Object是Java语言中的根类,即所有类的父类。如果一个类没有特别指定父类,那么默认继承Object类。public String to
24、String():返回该对象的字符串表示。(对象的类型+内存地址值)public boolean equal(Object obj):指示其他某个对象是否与此对象相等。我们直接输出对象名的时候其实通过该对象调用了toString()方法Objects类public static boolean equals(Object a,Object b):判断两个对象是否相等Date类java.util.Date类:表示特定的瞬间,精确到毫秒。public Date():分配Date对象并初始化此对象,已表示分配它的时间(精确到毫秒)public Date(long date):分配Date对象并初始化
25、此对象,以表示自动标准基准时间(1970年1月1日00:00:00 GMT)以来的制定毫秒数。public long getTime()把日期对象转换成对应的时间毫秒数。DateFormat类java.text.DateFormat是日期/时间格式化子类的抽象类,我们通过这个类可以完成Date对象和String对象之间的来回转换。由于DateFormat为抽象类,所以需要一个常用的子类java.text.SimpleDateFormatpublic SimpleDateFormat(string patten):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormatpub
26、lic String format(Date date):将Date对象格式化为字符串public Date parse(String source):将字符串解析为Date对象Calendar类java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量public static Calendar getInstance():使用默认时区和语言环境获得一个日历(静态方法创建Calendar类的对象)public int get(int field):返回给定日历字段的值public void set(int fie
27、ld,int value):将给定的日历字段设置为给定值public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量public Date getTime():返回一个表示此Calendar时间值的Date对象西方星期的开始为周日,在Calendar类中,月份的表示是以0-11代表1-12月System类java.lang.System类中提供了大量静态方法可以获取与系统相关的信息或系统级操作public static long currentTimeMillis():返回以毫秒为单位的当前时间public
28、 static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):将数组中指定的数据拷贝到另一个数组中StringBuilder类StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。publicStringBuilder() :构造一个空的StringBuilder容器。publicStringBuil
29、der(Stringstr) :构造一个StringBuilder容器,并将字符串添加进去。publicStringBuilderappend(.) :添加任意类型数据的字符串形式,并返回当前对象自身。publicStringtoString() :将当前StringBuilder对象转换为String对象。集合集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组的区别数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。Collection:单列集合类的根接口,用于存储一系列符合某种规则的
30、元素,它有两个重要的子接口,分别是java.util.List 和 java.util.Set 。其中, List 的特点是元素有序、元素可重复。 Set 的特点是元素无序,而且不可重复。 List 接口的主要实现类有 java.util.ArrayList 和 java.util.LinkedList , Set 接口的主要实现类有 java.util.HashSet 和 java.util.TreeSet 。Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。publicbooleanadd(Ee) : 把给定的对象添加到当前集合中 。publicvoidclear() :清空集合中所有的元素。publicbooleanremove(Ee) : 把给定的对象在当前集合中删除。publicbooleancontains(Ee) : 判断当前集合中是否包含给定的对象。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1