Java学习笔记4

  1. 实现多重继承三种方式:(1)直接实现多个接口 (2)扩展(extends)一个类然后实现一个或多个接口  (3)通过内部类去继承其他类
  2. list和set的区别:Set 不能有重复的元素,且是无序的,要有空值也就只能有一个,因为它不允许重复。 L ist 可以有重复元素,且是有序的,要有空值也可以有多个,因为它可重复
  3. 类方法和实例方法

类的方法就是指类中用static 修饰的方法,非static 为实例方法(指的是调用这种方法需要生成一个实例)

主要注意:1、类方法他是依附于类,而不是对象,因此类方法里面不能有this关键字。

2、类方法中也可以调用其他类的类方法。

3、类方法中可以创建对象,所以可以调用实例方法

 ServletContext对象

:servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据。ServletContext对象是真正的一个全局对象,凡是web容器中的Servlet都可以访问。

   整个web应用只有唯一的一个ServletContext对象

servletConfig对象

用于封装servlet的配置信息。从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对servlet自身有效,一个servlet的ServletConfig对象不能被另一个servlet访问。

 

Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。

此外,java内部使用unicode编码,其实是支持中文变量名的,比如string 世界 = "我的世界";这样的语句是可以通过的

对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误,不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类(局部内部类)。一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。

 this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为this(参数);

super是调用父类的方法;

 

首先牢记这个继承中代码的执行顺序:

1.父类静态对象,父类静态代码块

2.子类静态对象,子类静态代码块

3.父类非静态对象,父类非静态代码块

 4.父类构造函数

 5.子类非静态对象,子类非静态代码块

 6.子类构造函数

此外,如果在父类构造函数里面调用了某个函数,在子类里面被重写了,那么调用时,会调用子类这个。

在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错。

 

Java和C++都是静态类型的面向对象编程语言。静态类型的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型。

 

Java中四种线程安全的单例模式实现方式 (线程安全):饿汉式,懒汉式加双重检锁(本身是线程不安全的),枚举,静态内部类

 

命名规范:类名的第一个字母大写,方法名一般以动词开头,多个单词的话后面单词的首字母大写,比如 addSpeed

现在可以直接输入二进制(0b开头),八进制(0开头),十进制,16进制 (0x开头)

变量命名只能使用字母 数字 $  _   ;变量第一个字符 只能使用 字母 $ _

如果任何运算单元的长度都不超过int,那么运算结果就按照int来计算

byte a = 1;

byte b= 2;

a+b -> int 类型 ,

简单的说:

带符号右移 >> 移动后正的还是正的,负的还是负的,符号不变

无符右移>>>移动后,变正的了.

 

原子操作,不需要加锁,而需要不止一步的操作,在进行多线程的时候是需要进行同步的,比如x++,++x。

原子性:指该操作不能再继续划分为更小的操作(也就是一步就可以完成的操作)。

 Java中的原子操作包括:    

        1、除long和double之外的基本类型的赋值操作

        2、所有引用reference的赋值操作

        3、java.concurrent.Atomic.* 包中所有类的一切操作

 

子类重写父类方法时,方法的访问权限不能小于原访问权限,在接口中,方法的默认权限就是public,所以子类重写后只能是public。此外接口中没有变量(既然是约束和规范,怎么能够定义一个大家都可以改的东西呢?),只能是常量,接口中定义常量默认的修饰符为public static final。

 

堆区分为三个区:

年轻代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,也就是方法区)。

年轻代:对象被创建时(new)的对象通常被放在Young(除了一些占据内存比较大的对象),经过一定的Minor GC(针对年轻代的内存回收)还活着的对象会被移动到年老代(一些具体的移动细节省略)

年老代:就是上述年轻代移动过来的和一些比较大的对象。FullGC是针对年老代的回收

永久代:存储的是final常量,static变量,常量池。

 

ResultSet是sql数据集里面查询返回结果的一种对象,此外还能操作里面的数据。跟普通的数组不同,索引从1开始而不是从0开始

编译看左边,运行看右边,指的是:Animal b = new Dog(); 编译器会把当前类型当做父类类型,但是运行时b.bark()这个方法是右边子类类型,父类没有这个方法,所以在用父类调用bark方法时,是不存在的,会编译报错。

 

抽象类

抽象类中的抽象方法一定有abstract修饰,不能用private,static修饰,并且必须以分号结尾,不带花括弧。

抽象类的成员变量默认为default(本包可见),可以为private ,protected,public

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值