java学习笔记记录

1.Java实现可移植性靠的是JVM,JVM就是一台虚拟的计算机,只要在不同的操作系统上植入不同版本的JVM,那么Java程序就可以在各个平台上移植,做到“一次编写,处处运行”;
2.Java中程序的执行步骤为:
使用javac命令将一个.java文件编译成.class文件;
使用java命令可以执行一个.class文件;
3.每次使用Java命令执行一个class时,都会启动JVM,JVM通过CLASSPATH给出的路径加载所需要的类文件,可以通过SET CLASSPATH设置类的加载路径;
PATH:是操作系统的环境属性,指的是可以执行命令的程序路径;
CLASSPATH:是所有*.class文件的执行路径,java命令执行时将利用次路径加载所需要的*.class文件;
4.Java程序主要分为两种:java application和java applet,Java applet主要是在网页中嵌入的Java程序,基本上已经不再使用了,而application是指有main方法的程序;
5.&和&&以及|和||的区别:&表示普通与,所有的判断条件都要依次执行;&&表示短路与,如果前面的条件返回了false,则后面的不再判断直接返回false;
|表示普通或,所有的判断条件都要依次执行;||表示短路或;
6.Switch(expression)中,expression是一个整数表达式,因此传递给switch和case语句的参数应该是int、short、char或byte,而对于long却不可以使用;在jdk1.7之前,String都不能作用与switch,jdk1.7以后switch支持了String判断;
7.方法重载时只看方法名称、参数类型及个数,而无须关注方法的返回值类型;
8.Java的数据类型可分为两种:基本数据类型和引用数据类型;
9.UNICODE为每个字符制定了一个唯一的数值,在任何语言、平台、程序都可以安心地使用;
10.数据类型的转换可分为下列两种:自动类型转换和强制类型转换;
11.Break强制终止当前循环;continue强制跳到循环的起始处;
12.封装性:一是指把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单位中;另一层含义是指“信息隐蔽”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓,或只允许使用对象的功能,而尽可能隐蔽对象的功能实现细节;
13.继承性:首先拥有反映事物一般特性的类,然后在其基础上派生出反映特殊事物的类;
14.多态:是允许程序中出现重名现象,Java语言中含有方法重载与对象多态两种形式的多态;
方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同;
对象多态:子类对象可以与父类对象进行相互的转换,而且根据其使用的子类的不同完成的功能也不同;
15.类是对象的模板,而对象是类的实例;
16.在主类中定义,并且由主方法直接调用的方法必须加上static;
17.堆内存:保存对象的真正数据,都是每一个对象的属性内容;
栈内存:保存的是一块堆内存的空间地址;
如果要开辟堆内存空间,只能依靠关键字new来进行开辟,即只要看见了关键字new,不管何种情况下,都表示要开辟新的堆内存空间;
一块堆内存空间可以同时被多个栈内存所共同指向,则每一个栈内存都可以修改同一块堆内存空间的属性值;
18.空指针异常只会在引用数据类型上产生,并且只要是进行项目的开发,都有可能会出现此类异常,而此类异常的唯一解决方法就是查找引用数据类型,并观察其是否被正确实例化;
19.构造方法的名称和类名称保持一致;构造方法不允许由返回值类型声明;由于对象实例化操作一定需要构造方法的存在,所以如果在类值中没有明确定义构造方法的话,则会自动生成一个无参、无返回值的构造方法供用户使用;如果一个类中已经明确定义了一个构造方法的话,则无实际意义的构造方法将不会自动生成,也就是说,一个类值中至少存在一个构造方法;
在一个类中对构造方法重载时,所有的重载方法按照参数的个数由多到少或者由少到多排列,都是规范的;
在每个类中的定义顺序:首先定义属性,之后定义构造方法,最后定义普通方法;
类种定义属性的默认值,只有在构造(不是构造方法,构造方法实际上严格来讲是属于整个对象构造过程的最后一步;对象的构造需要为其分配空间,之后为其设置默认值,最后留给构造方法进行其他操作)执行完毕后才可以真正赋值;
20.如果现在一定要强调所调用的方法是本类中所定义的方法,可以在方法前增加一个this;
21.匿名对象(例如:new Person.tell()):开辟了堆内存空间的实例化对象,并且只能使用一次,使用一次之后就将被GC回收;
22.简单Java类:一个类之中,只包含基本的属性,setter()、getter()方法;
简单Java类的开发原则:类名称必须可以明确地表示出一类的定义,如Person;
类种的所有属性必须使用private进行封装;类中的所有属性都必须定义相应的getter()、setter()方法;类中可以提供构造方法,为属性初始化,但是不管提供了多少个构造当发,一定要保留一个无参构造;类中不允许直接使用System.out.println()署出,所有的内容要返回给被调用处输出;
23.数组属于引用型数据;
24.使用“==”判断的是两个对象是否相等,属于数值判断,判断的是两个对象的内存地址数值,并没有判断内容;如果要判断字符串中的内容是否相等,则使用equals()进行;
25.在String类进行设计时采用了一种称为共享设计模式的概念,在每一个运行的JVM底层存在一个字符串的对象池,如果用户采用了直接赋值的方式,会将字符串的内容放入到池中,以供其他继续使用直接赋值方式的String对象使用,如果新声明的字符串内容不在池中,则会开辟一个新的,继续放到池中,以供下次使用;
使用构造方法开辟的字符串对象实际上会开辟两块空间,其中有一块空间将成为垃圾;另外,使用构造方法实例化的String类对象内容不会保存在字符串对象池值中,即不能够进行共享数据操作;
手工入池的方法:public String intern();new String(“aaa”).intern(); intern()方法表示将开辟的字符串对象保存在对象池中;
26.String类的方法:
public char charAt(int index):取得指定索引位置上的字符;
public char[] toCharArray():将字符串转换为字符数组;
public byte getBytes():将字符串变为字节数组;
public byte[] getBytes(String charsetName) 字符串转码操作;
public boolean equals(String anObject):区分大小写的相等判断;
public boolean equalsIgnoreCase(String anotherString):不区分大小写,比较是否相等;
public int compareTo(String anotherString):比较两个字符串的大小;
public boolean contains(String s):查找指定的子字符串是否存在;
public int indexOf(String str):从头查找指定字符串的位置,找不到返回-1;
public int indexOf(String str,int fromIndex):由指定位置向后查找字符串的位置,找不到返回-1;
public int lastIndexOf(String str):  由后向前查找字符串的位置,找不到返回-1;
public int lastIndexOf(String str,int fromIndex):从指定位置由后向前找;
public boolean startsWith(String prefix):判断是否以指定的字符串开头;
public boolean startsWith(String prefix,int toffset):从指定位置判断是否以指定字符串开头;
public boolean endsWith(String suffix):判断是否以指定的字符串结尾;
public String replaceAll(String regex,String replacement):全部替换;
public String replaceFirst(String regex,String replacement):替换首个;
public String substring(int beginIndex):从指定位置截取到结尾;
public String substring(int beginIndex,int endIndex):截取指定范围的内容;
public String[] split(String regex):按照指定的字符串全拆分;
public String[] split(String regex,int limit):拆分为指定的长度;
在进行拆分的时候也会出现一些字符是无法拆分的,此时就需要使用\\(表示一个\)进行转义;
public boolean isEmpty():判断是否为空字符串;
public int length():取得字符串长度;
public String trim():去掉左右空格;
public String toLowerCase():将全部字符串转小写;
public String toUpperCase():将全部字符串转大写;
public String intern():入池;
public String concat(String str):字符串连接;
27.数组没有length这个方法,有length属性;String有length()方法;
28.this关键字:表示本类属性、表示本类方法和当前对象;
建议:只要是调用类中属性的情况,都要使用“this.属性”的方式进行表示;
所有的构造方法是在对象实例化时被默认调用的,而且是在调用普通方法之前调用,所以使用“this()”调用构造方法的操作一定要放在构造方法的首行;如果一个类中存在了多个构造方法,并且这些构造方法都使用了this()互相调用,那么至少保留一个构造方法没有调用其他构造方法,以作为程序的出口;
29.String类本身属于一个特殊的操作类,而且这个类最大的特点是内容不可改变;基本数据类型本身不牵扯到内存关系,而且传递时也只是数值传递,不是内存传递;
30.对象比较:本类接收自己的引用,而后与本类当前对象(this)进行比较;为了避免NullPointerException的产生,首先应该增加一个null的判断;为了防止浪费性能的情况出现,可以增加地址数值的判断,因为相同的对象地址相同;之后进行属性的依次比较,如果属性全部相同,则返回true,否则返回false;
31.Java中主要存在四块内存空间:栈内存空间(保存所有的对象名称,更准确地说是保存了引用地堆内存空间地地址)、堆内存空间(保存每个对象的具体属性内容)、全局数据区(保存static类型的属性)、全局代码区(保存所有的方法定义);
32.static定义的属性表示是公共属性,那么如果现在由某一个对象修改是不合适的,应该由类来进行操作,即“类名称.static属性”;static属性虽然定义在了类中,但是其可以在没有实例化对象时进行调用;
33.static方法和非static方法:static定义的方法不能调用非static的方法或属性;非static定义的方法可以调用static的属性或方法;使用static定义的属性和方法,可以在没有实例化对象的时候使用;非static定义的属性和方法,必须实例化对象之后才可以进行调用;
34.如果一个方法在主类中定义,并且由主类方法直接调用时,其前面必须有public s

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值