JAVA的一些心得

JAVA总结

1.Java环境

  1. jdk,jre,jvm的区别:JDK(java development kit) JDK是Java开发工具包,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
    JRE( java runtime environment) JRE是java的运行环境,包含JVM标准实现及Java核心类库。
    JVM(java virtual machine) JVM是java虚拟机,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。
    jdk 里面包含开发需要常用的jar包,也包含jre运行环境;
    jre 里面包含JVM开发虚拟机和jar包

2.变量、常量和方法

  1. 变量:定义变量就是要告诉编译器这个变量的数据类型,这样编译器才知道需要分配多少空间给它,以及它能存放什么样的数据。在程序运行过程中空间的值是变化的,这个内存空间就成为变量。为了便于操作,给这个变量取个名字,称为变量名。
  2. 变量的命名规则:①变量名必须是一个有效的标识符②变量名不可以使用Java中的关键字③变量名不能重复④应选择有意义的单词作为变量名。变量的有效范围是程序代码能够访问该变量的区域,若超出该区域,则在编译时会出现错误。在程序中,一般会根据变量的有效范围将变量划分为成员变量和局部变量。
  3. 常量:在程序运行过程一直不会改变的量称为常量,通常也成为"final变量"。常量在整个程序中只能被赋值一次。①在为所有的对象共享值时,常量是非常有用的。声明常量的标准语法为:final 数据类型 变量名[=值]②常量名通常使用大写字母,但这不是必须。很多Java程序员使用大写字母表示常量,是为了清楚的表明正在使用常量。③当定义的final变量为成员变量时,必须在定义时就设定它的初始值,否则将会提示编译错误。
  4. 方法:
修饰符 返回值类型 方法名(参数类型 参数名){
    ……
    方法体
    ……
    return 返回值;
}

设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样有利于我们后期的扩展。


3.Java数据类型

  1. Java中八大基本数据类型
    在这里插入图片描述
  2. Java中八大基本数据类型的转换:
    (1)boolean不可以转换为其他的数据类型;
    (2)整数型,浮点类型,字符型是可以相互转换的,转换时遵守下面的原则:a) 容量小的类型自动转换为大的类型,数据类型按容量大小排序为:byte, short, char < int < long <float < doubleb) byte, short, char 三种类型间不会相互转换,他们三者在计算时,首先会转换为int类型; c) 容量大的类型在转换为小的类型的时候,必须加上强制转换符,此时可能造成精度降低或者溢出问题;d) 有多种数据类型混合计算的时候,系统首先自动转换为容量最大的那个类型再来继续计算;e) 默认的浮点数类型是double,如:1.2; 默认的整数类型是int类型,如:1;

4.运算符

  1. 算术运算符:在Java中,使用算数运算符+、- 、* 、/ 表示加、减、乘、除运算。当参与 / 运算的两个操作数都是整数时,表示整数除法;否则,表示浮点数除法。整数的求余操作(取模)用 % 表示。自增运算符和自减运算符都有两种形式(n++和++n 、n–和–n)。
int a=5;
int b=5;
int x=a++; // x=5,a=6
int y=++a; // y=6,a=6
  1. 关系运算符:Java关系运算符主要包括==、!=、<=、>=、>、<
  2. 逻辑运算符:主要包括逻辑“与 ” && 、逻辑“或” || 、逻辑“非”! 。&& 和 || 是按照“短路”方式求值的,即,如果第一个操作数已经能够确定表达式的值,第二个操作数就不必 计算了。
int x=0;
if(x++=0 && ++x=2);
System.out.println(x); // x=2;
if(x++=1 && ++x=2);
System.out.println(x); // x=1;
  1. 位运算符:主要包括:&、|、^、~、>>、<<、 >>>。>>>(右移)运算符将用0填充高位;>>运算符用符号位填充高位。没有<<<运算符。

5.条件和循环

  1. if…else:一个 if 语句包含一个布尔表达式和一条或多条语句。语法如下
if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}
//如果条件语句的值为 true,则执行 if 语句中的代码块,否则执行 else语句块后面的代码。
  1. if…else if…else 语句:if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。使用 if,else if,else 语句的时候,需要注意下面几点:1.if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。2.if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。3.一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
    语法格式如下
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}
  1. while循环:while是最基础的循环结构,在循环结构中只要表达式中的判定一直为Ture,则循环一直进行。基本结构为:
while( 布尔表达式 ) {
  //循环内容
}
  1. do…while 循环:对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
do {
       //代码语句
}while(布尔表达式);
//布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
  1. for循环:最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。执行一次循环后,更新循环控制变量。语法如下:
for(初始化; 布尔表达式; 更新) {
    //代码语句
}
  1. 增强 for 循环:声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
for(声明语句 : 表达式)
{
   //代码句子
}
  1. break和continue:break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。
    continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

6.Java异常

  1. 异常分类
    在这里插入图片描述
    Error:是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。非代码性错误。因此,当此类错误发生时,应用不应该去处理此类错误。

Exception::程序本身可以捕获并且可以处理的异常。

运行时异常(不受检异常):RuntimeException类极其子类表示JVM在运行期间可能出现的错误。编译器不会检查此类异常,并且不要求处理异常,比如用空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException)。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。

非运行时异常(受检异常):Exception中除RuntimeException极其子类之外的异常。编译器会检查此类异常,如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

  1. 异常的处理:抛出异常:throw,throws。捕获异常:try,catch,finally.抛出异常throw。throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结 束当前方法的执行。

7.封装继承多态

  1. 封装:封装机制在程序中的体现是:把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。
  2. 访问修饰符:private 类访问权限:本类内部可以访问,不能继承到子类;default 什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承;protected 子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;public 公共访问权限:任何地方都可以访问,能继承到子类;
  3. 继承:继承是多态的前提。对类而言,只支持单继承。
格式:
[修饰符] class SubClass extends SuperClass

子类与父类的关系:子类拓展父类(子类是父类的一种特殊情况)主要是以父类为基础,然后添加属于自己的字段和方法。

父类的私有成员子类不能继承到;父类的构造方法不能被继承;Java只支持单继承,不支持多继承;//不然的话,比如show方法,继承了多个,不知道到底调用那一个。一个类有且只有一个直接父类;

一个类没显示的继承其他的一个类的时候,默认的直接父类就是Object类;
Student 的直接父类是Person,Object类也是Student类的父类,但是是间接父类;一旦一个类显示的继承了其他的一个类的时候,此时默认的直接父类Object就会被取消;Java里一个类只能有一个直接父类;java.lang.Object是所有类的父类,Object要么是直接父类要么是间接父类。

子类对象实例化过程在继承操作中,对于子类对象的实例化:子类对象在实例化之前必须首先调用父类中的构造方法之后再调用自身的构造方法。

  1. 多态:指同一个实体同时具有多种形式。好比,你去面馆吃面,说我要吃面,那么;老板给我牛肉面,鸡蛋面等都可以,这就是说”面”有多种形态,也就是说实体有多种形态;编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定。如果编译时类型和运行时类型不同,就出现多态。

8.抽象类和接口

  1. 抽象类:①一个完整的类,所有方法都有实现(方法体),类可以没有方法class A{ 什么都没有},但是有方法就肯定要有实现②一个完整的类才可以被实例化,被new出对象来③如果一个类暂时有方法未实现,需要被定义为抽象类(方法只有方法名,形参列表,没有方法体(未实现方法),则所在类被定义为抽象类)④抽象类关键字用abstract声明,如果有抽象方法,一定要声明定义抽象类⑤抽象类也是类,一个类继承于抽象类,就不能继承于其他的(抽象)类⑥子类可以继承于抽象类,但是一定要实现父类们所有的abstract方法。如果不能全部实现,那么子类也必须被定义为抽象类。只有实现父类的所有抽象方法,才能变成完整类。
  2. 接口:①如果类的所有方法都没有实现,那么这个类就算是接口interface②类只可以继承(extends)一个类(被继承的类可以是抽象类也可以是普通类),但是可以实现(implements)多个接口,继承和实现可以同时(一个类可以继承于另外一个类,实现好几个接口,条件是,继承了另外一个类,例如继承抽象类,必须实现所有abstract的方法,实现多个接口,必须实现接口中所定义的所有方法)③接口不算类,或者说是“特殊类”,所以定义接口不需要class④保存在.java文件中,编译后也是.class字节码文件⑤接口设计是为了弥补单根继承的不足。单根继承下,一个类只能遵循另外一个类的标准⑥类实现接口,就必须实现所有未实现的方法。如果没有全部实现,那么只能成为一个抽象类
  3. 区别:a)抽象类abstract ,接口interface。b)抽象类可以有部分方法实现,接口所有方法不能有实现。c)一个类只能继承(extends)一个(抽象)类,实现(implements)多个接口。 d)接口可以继承多个接口。 e)抽象类有构造函数,接口没有构造函数。f)抽象类可以有main,也能运行,接口没有main函数。g)抽象类方法可以有private/protected,接口方法都是public

学习总结

  1. Which of below is right on object-oriented?

A.In programming we can use class to simulate physical entity in the real world.

B.For each physical entity we should create a class.

C.The behavior and attributes of an object have been packaged in class, which need to be accessed by calling the method of the class. But first of all you should know how the class is realized inside.

D. Some of the entities in real world cannot be described by class.

对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。 类是用于描述同一类的对象的一个抽象的概念,类中定义了这一类对象所具有的静态属性和动态属性类可以看成一类对象的模板,对象可以看成该类的一个具体实例。

  1. Which is wrong on abstract class and interface?

A.In Java, the abstract class indicate a relationship of inheritance. One class can only apply one inheritance, but can implement multiple interfaces.

B.The abstract class doesn’t have to include abstract methods.

C.It is a compile-time error if an interface has the same simple name as any of its enclosing classes or interfaces

D.The variable defined in interface is of the public static final type by default, which needs to be given a initial value. Therefore in implementation class it cannot be redefined and its value cannot be changed.

E.All the methods in an interface should be modified by the keyword of public.

抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;一个类只能继承一个抽象类,而一个类却可以实现多个接口。

  1. String str = 1 + 2 + “abc”;What is the str value after execution of the above codes?

先算1+2=3 然后跟“abc”进行字符串拼接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值