浅谈Java的一些概念

  1. 值传递与引用传递
    首先声明:严格意义上来说,Java中所有方法参数都是传值。因为即使是传递的参数是对象的引用时,引数本身也是传值的。所有基本类型都是传值的。
    传值:被传入的参数被视为内部的局域变量,其变化不影响外部变量的原始值。
    传引:对于引数本身来讲也是传值的,但是在方法内部若对引数所指向的对象属性有改变,则会直接实时地影响所指向的对象属性。
  2. 阻塞和非阻塞,同步和异步
    阻塞:是指请求结果返回之前, 当前线程会被挂起(被阻塞), 这时线程什么也做不了,此时线程处于blocked状态
    非阻塞:是指请求结果返回之前, 当前线程没有被阻塞, 仍然可以做其他事情.
    同步:是指发出一个请求, 在没有得到结果之前该请求就不返回结果, 请求返回时, 也就得到结果了.与阻塞不同的是,此时线程处于runable状态。
    异步:是指发出一个请求后, 立刻得到了回应, 但没有返回结果. 这时我们可以再处理别的事情(发送其他请求), 所以这种方式需要我们通过状态主动查看是否有了结果(状态查询), 或者可以设置一个回调来通知调用者(回调通知).
  3. 构造函数
    a.构造器没有任何返回类型,哪怕是void也不行。假如指定了返回值,那么Java会视为一个普通的方法。
    b.如果没有显示地调用父类的构造器,Java总是自动地调用父类的默认构造器。(也就是第一行会默认为super( ))
    c.只要类中显式地定义一个或多个构造器,那么Java不会再为你定义一个默认的构造器,所以当建立了有参构造函数后应手动创建无参构造函数。
    d.构造函数可以被重载,并且在其体内可以用this()和super()来调用其它的构造器。但是this()和super()只能放在构造函数体的第一行进行调用。
    e.构造器的修饰符只可以是接入控制符public、private、protected、(default)。其它修饰符一律不可。
    f.构造方法不可被继承。
  4. 方法的重载与重写
    重载:指同一类中有多个同名函数,即是对函数名的复用,重载函数的 参数个数、参数类型、参数顺序、返回值类型都可以不一致。 访问修饰符也可以不同。
    重写:指继承体系中的同名函数, 子类中的方法与父类中继承的方法有完全相同的返回值类型、方法名、参数个数以及参数类型。 子类的访问修饰符不能小于父类的访问修饰符。public>protect>默认>private
    注意:static、final、private修饰的方法不能被重写。
  5. java三大特性:继承、封装、多态
    继承(extends):子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用。Java中只能单继承,但可以多重实现。方法的重写是继承的一种体现。实例化一个子类,java程序的执行顺序详细请参考子类继承父类后相应的输出顺序
    封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。最典型的封装就是通过get、set方法来访问属性,还有工具类的模块化及Java内部类也属于封装的应用。
    多态:多态主要表现为**父类的引用可以指向本类的对象和父类的引用可以指向子类的对象两个方面;**本类对象和子类对象,同样都是父类的引用,当我们指向不同的对象时,它们调用的方法也是多态的。多态就是对象的多种形态,简单来讲:B extends A,
    {A a1=new A;A a2=new B;}A可以创建本类引用A,也可以创建A类的子类引用B。所以说继承是多态的基础,方法的重写、抽象类、接口都体现出了多态的特性。
  6. 抽象类和接口的区别
    a.一个类只能继承一个抽象类,而一个类却可以实现多个接口。
    b.包含抽象方法的类是抽象类。抽象类中可以包含普通的方法,也可以没有抽象方法。而接口不能有普通方法。
    c.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;且必须给其初值,所以实现类中不能重新定义,也不能改变其值;抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
    d.接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法,抽象类必须用abstract修饰,而接口可以省略。
  7. equals()和==
    equals()比较的是值,对于覆盖equals()的类,只要值相同,便返回true。但对于比较的(类型不兼容的两个对象,值相同)或(没有覆盖equals()的类,即使对象类型相同,值也相同)情况下返回false。
    ==比较的是地址是否一致,对于基本类型而言,系统会自动先归一精度,然后再比较值,若值相同则返回true。对于对象而言,假如不是指引同一个对象,则返回为false。
  8. String
    String类最重要的一点在于“不变性(immutable)”。它的意思是一旦String类产生了就不会再改变了,若试图改变它都会产生新的对象。
  9. collection类与collection接口
    collection类是对集合的一堆操作方法,Collection接口又可扩展为两个基本接口:List接口和Set接口。
    对象收集从整体上分为Collection接口和Map接口。这种分类的标准是:某个元素位置上放置元素对象的个数。显然,Map接口放置的是一对。
    Collection:它是一个基类的接口,对元素没有任何的限制,无序且可以重复。
    List :List是允许对象重复出现的有序列表,允许存在多个null对象。
    Set : Set中的元素无序、不重复,允许存在null对象但仅能有一个。
    Map :即映射,借助于key和value来描述对象的搜索。key域中要求唯一性(其实就是一个Set),value域可以允许有重复的元素(其实就是一个Collection)。另外注意:常见的HashMap是无序的,而TreeMap是有序的。
  10. switch(i)
    a.switch(i)中的参数最高精度是int(i的数据类型只能是以下六种数据类型或他们的包装类byte,short,char,int,enum,string),所以也就不可能是long,float,double等
    b.default语句可以放置于任何地方(default意为都不匹配case中的值)
    c. 当语句中未加break语句时,则程序会从匹配的地方开始执行(包括匹配default语句),接下来所有的语句都会被执行(而不管匹配否),直到遇到break语句或switch尾部。
  11. 求余%,只管左边的符号,右边不管
    例:a=-10,b=7,c=-3
    a%b=-3,a%c=-1,b%c=1.
  12. java的基本组成单位是类,Java的8种数据类型
    位、字节、字符:一个字节有8位,一个byte就是一个字节,有8位;一个字符等于两个字节,一个中文汉字占一个字法。
    Byte(字节型):8位,short(短整型)、char(字符型):16位,int(整型)、float(单精度型/浮点型):32位,long(长整型)、double(双精度型):64位, boolean(布尔类型):false,true
    类型转换:自动转换:byte–>short–>int–>long–>float–>double 强制转换:①会损失精度,产生误差,小数点以后的数字全部舍弃。②容易超过取值范围。
字节数1个2个4个8个
数据类型Bytechar,shortint,floatlong,double
  1. i++与++i运算
    记忆:++在前,先赋值再运算;++在后,先运算再赋值
    例:int i=5, j=9; (i++)2=10, (++i)2=12;那么 (i++)+(–j)+ij=?
    分析:(i++)+(–j)=5+8=13,这一步后i=6,j=8,所以(i++)+(–j)+i
    j=5+8+6*8=61.
  2. &与 &&,|与 ||
    &和 | 既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。
    a. &和 | 做逻辑运算符与&与||两者的结果是一样的,&&和||更加高效一点。
    原因在于& 无论左边结果是什么,右边还是继续运算,&&当左边为假,右边不再进行运算。| 无论左边结果是什么,右边还是继续运算,||当左边为真,右边不再进行运算。
    b.&和 | 做位运算符,做二进制位之间的与运算:
比如 6&3=110&011=010=2
  6|3=110|011=111=7
  1. String,Stringbuffer,Stringbuild的区别
    a.执行速度上,运行速度快慢为:StringBuilder > StringBuffer > String
    b.在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。String对象一旦创建之后就不可更改,StringBuilder和StringBuffer的对象是变量,对变量可以直接对该对象进行更改。
    c.在应用场景上,String适用于少量的字符串操作的情况;StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况;StringBuffer适用多线程下在字符缓冲区进行大量操作的情况
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值