JAVA基础知识笔记

2018.7.22

作者:小孟鱼

java中包的知识

  • 包的三大作用
  1. 区分相同名字的类
  2. 当类很多时,可以很好的管理类
  3. 控制访问范围
  • 包-打包命令

Package com.jiangyu;

三.命名规范

小写字母 例如:com.sina.jiangyu

  • 常用的包

long包 net包..........

继承

  1. 子类最多只能继承一个父类(指直接继承)
  2. java中所有类都是Object类的子类
  3. JDK6中202个包3777个类,接口,异常,枚举,注释和错误
  4. 在做开发时,多用API
  5. 在使用类的时候,问Google大神

方法的重载

  1. 方法名相同
  2. 方法的参数类型,个数,顺序至少有一项不同
  3. 方法返回类型可以不同
  4. 方法的修饰符可以不同

方法的覆盖

  1. 子类方法的返回类型,参数,方法名称,要和父类的

返回类型,参数,方法名称完全一样,否则编译错误

  1. 子类方法不能缩小父类方法的访问权限

抽象类

  1. 抽象类在java中一个比较重要的类

注意:

  1. 用abstract 关键字修饰一个类,这个类叫抽象类
  2. 用abstract关键字修饰一个方法时,这个方法就是抽象方法
  3. 抽象类不能实例化
  4. 抽象类不一定包含abstract方法。也就是说,抽象类

     可以没有abstract方法

  1. 一旦类包含abstract方法,则这个类必须声明abstract
  2. 抽象方法不能有主体,如图所示:

     Abstract void aaa(){ }//错误

  1. 抽象类里面可以有拥有实现的方法

8.当一个子类继承的父类是抽象类的话

按照java语法规定需要我们把抽象类的所有抽象方法全部实现

接口

  1. 接口不能实例化
  2. 接口中的所有方法都不能有主体,图示:

Void aaa(){     }//错误

  1. 一个类可以实现多个接口
  2. 接口可以有变量【但变量不能用private和protected修饰】但必须给变量初始化

关于这一点我还想说

a接口中的变量,本质上都是static的,而且是final类型,不管你加不加static修饰

b在java开发中,我们经常把经常用的变量,定义在接口中,作为

全局变量使用。访问形式:接口名.变量名//System.out.println(Usb.a);

  1. 一个接口不能继承其他类,但是可以继承别的接口

6.编写一个相机类,并实现Usb接口一个重要的原则:当一个类实现一个接口,就要求该类把这个接口的所有方法,通通实现

 

public class Demo1 {

static int i=1;

//静态区域块

//静态代码区只执行一次

static 

{

//该静态区域块只执行一次

System.out.println("a");//测试执行的次数

i++;

}//静态的只初始化一次,静态变量共享一个内存引用

public Demo1(){

System.out.println("b");//测试执行的次数

i++;

 

}

 

public static void main(String[] args) {

Demo1 t1=new Demo1();

System.out.println(t1.i);

Demo1 t2=new Demo1();

System.out.println(t2.i);

}

}

 

public class Classmate

{

public static void main(String[] args)

{

// int num;

// num = 30;

// System.out.println("我们班共有"+num+"个学生");

//在java中,对char类型运算时,直接当做sacii码进行运算就可以了!

//char test1 = 'a'+28;

//System.out.println(test1);

// int a=25;

// a=45;

// System.out.println("a="+a);

//这样就违背从高精度到低精度转的原则   

//bate<short<int<long<float<double(高精度赋值给低精度是错误的)

//int a=1.2(错误的);

//结论:数据类型只能从低精度->高精度转换

//在java中小数默认为double类型

// double a=3;//(低精度的值可以赋值给高精度是正确的)

// float b=3.4f;

// System.out.println("b="+b);

// int a=1;

// double b=4.2;

// //a=b(错误不能高精度赋值给低精度);---->>>>应该是a=(int)b;

// a=(int)b;

// b=a;

// System.out.println("b="+b+"a="+a);

int a=3;

int b=(int) (a+4.5);//结论:当一个int数据和一个double数据相加时运算结果向高精度转换

System.out.println(b);

 

}

}

final -概念

final可以修饰变量或者方法

1.当不希望父类的某个方法被子类覆盖(override)时,可以用final修饰

2.当不希望类的某个变量的值被修改,可以使用final修饰,如果一个变量

   是final ,则必须赋初值 。

3.当不希望类被继承是,可以用final修饰

4.某种方法用final修饰,则表示不可以被修改,不可以被覆盖

注意事项

1.final修饰的变量又叫常量,一般用xx_xx_xx来命名

2.final 修饰的变量在定义时,必须赋值,并且以后不能赋值

final-什么时候用

1.因为安全的考虑,类的某个方法不允许修改

2.类不会被其他类继承

3.某些变量值是固定不变的,比如圆周率3.1415926

 

数组

1.数组可以存放多个同一类型的数据

2.程序员用法

①.数组的定义:

数据类型   数组名[]=new 数据类型[大小]

int a[]=new int[5];

第一步:初始化数组

语法: 数据类型 数组名[]={元素值,元素值.....}

int a[]={1,20,30}相当于int a[]=new int[3];a[0]=1....

第二步:数组的引用(使用)

语法:数组名[下标]

引用 a数组的第2个元素a[1]

数组小结

  1. 数组可以存放同一类型的数据
  2. 简单的数据类型(int float)数组,可直接赋值
  3. 对象数组在定义的时候,赋值时需要再次对每个对象分配空间【即:new 对象】
  4. 数组的大小可以事先指定
  5. 数组名可以理解为指向数组的首地址的引用
  6. 数组的下标是从0开始编号的

原码,反码,补码

对于有符号而言

  1. 二进制的最高位是符号位:0表示整数,1表示负数
  2. 正数的原码反码补码都一样
  3. 负数的反码=它的原码的符号位不变,其他位数取反(1->0;0->1)
  4. 负数的补码=它的反码+1;
  5. 0的反码补码都是0;
  6. java没有无符号,换言之,java中的数都是有符号的
  7. 在计算运算的时候,都是以补码的方式来运算的

Java语言中数据类型的所占的字节数

int 4字节

位运算符和移位运算符

基本概念:

1.java中有4个位运算,分别是“按位与&,按位或|,按位异或^,按位取反”

运算规则:

  1. 按位与&:两位全是1,结果为1;
  2. 按位或|:两位有一个为1,结果为1;
  3. 按位异或^:两位一个为0,一个为1,结果为1;
  4. 换位取反~ :1->0;0->1

例如~2=-3    2&3=2   2|3=3;  2^3=1;

java中的3个移位运算符:

  1. >> <<算数右移和算术左移,运算规则:
  2. 算术右移:低位溢出,符号位不变,并用符号位补溢出的高位:1>>2(2指的是移动的位数)
  3. 算术左移:符号位不变,地位补0(相当于移动一位给原来的数乘2.......)
  4. >>>逻辑右移,运算规则:低位溢出,高位补0;(应该和算术右移一样)

 

集合框架

List结构集合类

ArrayList类,LinkedList类,Vector类(向量),Stack(栈)类

Map结构的集合类

HashMap类,Hashtable类

Set结构的集合类

HashSet类,Treeset类

Queue结构的集合

Queue接口

泛型

优点:1.类型安全

  1. 向后兼容
  2. 层次清晰
  3. 性能较高,用GJ(泛型java)编写的代码可以为java编译器和虚拟机带来

更多的类型信息,,这些信息对java程序做进一步优化提供条件

异常处理

概念:

当程序出现无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可以

........)时,JAVA就会用异常对象来描述

Java中用两种方法处理异常

  1. 在发生异常的地方直接处理
  2. 将异常抛给调用者,让调用者处理

2 finally

如果把finally块置于try....catch......语句后。Finally块一般都会得到执行,它相当于一个万能保险,即使前面的try块发生异常,而又没有对应异常的catch块,finally块将马上执行

以下执行,finally块将不会被执行

  1. finally块中发生异常
  2. 程序所在的线程死亡
  3. 在前面的代码中用了System.exit();
  4. 关闭CPU

throw Exception(不常用).............

Swing组件

  1. 窗体组件
  2. 按钮组件

布局管理器

  1. 概念

组件在容器中(比如JFrame)中的位置和大小都是右布局管理器来决定的,所以的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理

  1. 种类

java共提供5种布局管理器:流式布局管理器(Flowlayout),边界布局管理器(BorderLayout),网格布局管理器(GridLayout),卡片布局管理器(Cardlayout),网格包布局管理器(GridBagLayout),前三种是目前最常见的布局管理器

 

流式布局管理器(Flowlayout)的注意事项:

  1. 不限制他所管理的组件大小,允许他们有最佳大小
  2. 当容器被缩放时,组件的位置可能变化,但组件的大小不变

默认组件是居中的对齐的,可以通过//设置布局管理器这个函数 this.setLayout(new FlowLayout(FlowLayout.LEFT));//控制按钮的位置

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值