个人java学习笔记

java背景

java由sun公司开发

Java语言特性:
完全面向对象,简单,分布式,健壮,安全,可移植(跨平台),多线程

java运行机制:不同的操作系统有不同的JVM,JVM屏蔽了底层系统的差异,实现“一次编译,处处运行”
运行一个java程序需要使用java命令,编译一个Java程序需要使用一个javac命令

path下是java命令的路径,例如编译器和解释器。classpath下是指定查找java程序文件的路径。

java将文件编译成字节码文件,字节码在不同系统下的jvm中,转换成不同系统的机器码,从而实现java的跨平台

jvm是java虚拟机


基础语法

1.常量:指在程序执行期间其值不能发生变化的数据。

2.基本数据类型(8种):
整数类型(byte 、short、int、long)
浮点数类型(float、double)
布尔类型(boolean)
字符类型(char)

3.位运算
涉及原反补码,正数不变,负数补码等于符号位不变,取反+1。
若位运算结果的补码仍为负数,则再取其原码获得原数
&优先于|

4.if和switch
if比switch强大,if可以用作于范围,但switch能用于范围的值
switch的参数支持类型:byte,int,short,char,枚举,String(jdk1.7之后)

5.数组
数组是存储具有相同数据类型的数据的集合,可以使用数组的名字来引用数组中存储的数据
数组的定义 数据类型[] 数组名 = new 数据类型[数组长度]
new关键字辉仔堆区开辟空间

数组有默认值: boolean flase,String null , char ‘’

数组遍历:通过下标遍历,增强for循环(for-each)

java数组的缺点,一旦创建,长度不可变,并且要用类型


面向对象

1.面向对象的特点:
抽象,封装,继承,多态
2.类
类是对大量对象共性的抽象,是可观事务在人脑的主观反映,是创造对象的模版
类由属性和行为组成
类的定义语法:
[修饰符] class 类名{//类的声明部分
      [成员变量]
      [成员方法]
}

3.方法重载:
同一个类中,方法名相同,参数列表不同(参数数量或者类型),即为方法重载

4.构造方法:
为了完成初始化操作,与类名一样的方法,没有返回值,如果没有定义构造方法,系统会提供一个无参的构造方法,如自己定义了,系统就不提供无参构造方法。

5.this的用法
1)通过this关键字指定当前对象,可以让隐藏的成员(局部变量和成员变量同名时)变量显示出来
2)通过this()也可以访问构造方法 ,但 this()必须位于构造方法的第一行

6.变量与方法
变量分为成员变量和类变量,同方法一样,存放于内存的公共区
方法也分为成员方法和类方法,只能访问类成员
类变量和类方法可以用类名直接访问,都是共有的

7.static关键字
static也可以声明静态代码块,类加载器加载类时,最先执行静态代码块,只会执行一次
不加static声明就是一个非静态代码块,在调用构造方法之前执行,会多次执行
封装,private关键字,属性私有化
调用子类构造器,默认先调用父类对象的构造器,即默认有super();
super(当前对象父对象):可以访问父类非私有的方法,super()可以调用父类构造
this()和super()不能同时出现

8.继承
java中的继承是单继承,一个类智能有一个父类
如果一个类没有显式的继承一个类,那他的父类就是java.lang.Object
子类继承的只能是父类非私有,构造方法不能继承
创建子类对象时,必须先调用父类的构造方法,再调用子类自己的构造方法,

9.权限

关键字访问权限继承权限
private本类内部可以访问不能被继承
(default)本类内部加同包其他类能被同包子类继承
protected同包加不同包的子类能被继承
public其他类能被继承

10.final的使用
1.修饰变量 变量变成常量
2.修饰方法 子类不可重写
3.修饰类 不可被继承

11.抽象类
一个类中只要有一个抽象方法,就必须声明称抽象类,抽象类不能实例化,抽象类中可以没有抽象方法
一个非抽象类如果继承抽象类,则必须实现它中所有的抽象方法。

12.接口
接口 interface 接口名 用implements实现
里面的变量都是常量,方法都是抽象方法(关键字可以省略,默认)
jdk1.8之后,可以使用default定义默认方法
还可以定义静态方法,不实例化,也能直接调用方法
接口是为了弥补java单继承的缺点
接口可以多继承其他多个接口

一个类只能继承一个类,但是能实现多个接口

13.==和equals
对于字符串常量,==比较的是内存中的首地址,如果不是同一个对象,==返回false。
对于非字符串变量,equals()比较的是内存的首地址,==比较的也是首地址。此时,两者等价,都是比较两边指向的是不是同一个对象。内存地址不同则对象不同。

14.克隆
1.这个类实现Cloneable接口
2.重写Object中的克隆方法
潜克隆:指复制了基本类型的数据,引用类型的对象没有复制,纸箱同个对象
深克隆:引用类型的也复制一份,在引用类型的对象也添加接口和重写方法

15.new和赋值的区别
String的new方法,是生成在堆区,再放在常量池中
直接给String对象赋值,是在String常量池中寻找,如果没找到,就创建
生成String优先采用赋值的方式,效率高

16.String,StringBuilde,StringBuffer
StringBuffer线程安全,效率低,是可变字符串
StringBuilder线程不安全,效率高,是可变字符串
String是不可变字符串

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值