java语言 基础总结

1、java数据类型:

  (1)基本数据类型:整型:byte  1

                                               short  2 

                                               int     4

                                               long  8

                                : 浮点型:float  4

                                                    double   8

                                ;字符型:char    2(每个字符占俩个字节 由于java用Unicode字符集编码方式 以一个16位无符号整数表示  取值范围 :\u0000~\uFFFF)

                                ;逻辑型:boolean   1

  (2)引用类类型:类  ;接口; 数组

2、java内存模型:

  (1)栈内存:存储基本数据类型、对象引用变量(对象名)和数组引用变量;

  (2)堆内存:存储数组和对象的数据;    //java有专门的垃圾回收线程 Gc   garbage collection   System.gc();

  (3)方法区(类似C里的数据段):整个生命周期都存在的  常量池 常量字符串   类中声明(静态)变量来自于方法区中存储的信息;

 /*****java内存模型唯一不会抛出异常区:progma counter register  PC寄存器区***/

3、打印堆上的内存信息来查看java 中某一类class的大小:

(1) jps 打印当前java进程pid号 

(2) jmap -histo:live pid(进程pid) +路径 打印

4、对于引用类型  比较对象的值 用equals比较   
       例:if(str1.equals(str 2);    //假设str1和str2 都是new出来的,在进行字符串内容的比较就需要用到equals

5、java跳转语句

(1)break

(2)continue

(3)return

其中break,continue有带标签的形式

6、和C区别的运算符:

(1)>>>  向右移 前面添0

(2)instanceof  测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据

(3)>>>=

按优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 

7、数组:

(1)一维数组的定义: int[] arry =new int [];
                                      int[] arr =new  int []{1,2,3};   //初始化就不能赋数组大小值
      int[] arr={1,2,3};

  foreach  遍历数组  ;  for(int val:array);

(2)二维数组: int [][]arr=new int[][]{{1,2,3}{4,5,6}{7,8,9}};
                           int [][]arr=new int [3][];   //先创建一个一维数组
           arr[0]=new int []{1,2,3,4};   //再逐个把每个一维数组每个元素创建一个4个元素的一维数组
           arr[1]=new int ...
           arr[2]=new int ..

   打印:System.out.println(Arrays.deepTosTring(array));

(3)数组拷贝方式一:克隆方法:   array.clone(); //尽量用数组拷贝2、3方法不用克隆   数组名+.clone();
                      二:     Arrays.copyOf(arry,array.length );
                              三:int [] array4=new int[array.length];
    System.arrays.copy(src arry ,src 位置,des arry ,des 位置,length );   5个参数

8、字符串 (java虚拟机为了减少字符串常量值的重复创建,开辟了字符串常量池)

(1)String类:创建后不能被修改,重新赋值其实是俩个对象,然后把新的值保存进去

(2)StringBuffer在进行字符串处理时,不生成新的对象,在内存上优于String类,不能通过赋值符号对他进行赋值,对象被建立以后,在内存中就会分          配内存空间,并初始保存一个null.除去字符所占空间,会另加16个字符大小的缓冲区,向StringBuffer中赋值的时候可以通过它的append方法.

(3)Character 是进行单个字符操作

9、类和对象

(1)类的加载过程:
1、加载
2、链接  为静态域分配空间  解析这个类创建的其他类的引用
3、静态初始化

(2)new 一个对象  给对象开辟内存  给对象自动调用构造函数进行初始化操作

(3)构造函数的作用:

                      1、创建对象

                      2、初始化对象
      3、类型转换  
(4)构造函数有返回值 

 (5)默认构造函数  当一个类没有任何构造函数的时候 虚拟机会给这个类自动产生一个默认构造函数  不带参数:public person();   person就是类
public Person(String name,int age,String sex,int []ar){
     System.out.println("Person (String,int,String,int [])");
}
 
Person p1=new Person("hhh",20,"boy",20011010);
(6)this 引用当前调用对象 
      this()可以直接调用构造函数,放在最前面,访问成员变量可以加this 可以不加  this.name=name  或者this(name);//放在函数最前面

(7)类与类之间的关系:
代理
组合:a part of..    一个类产生的对象成为另外一个类的(成员变量/数据成员
继承(extends):a kind of...    复用已有的代码   protect 专门用于继承类访问 一种从上到下的结果 派生类对象的构造  首先构造                                                              基类 
(8)派生类的构造函数里面调用;super () //表示子类指定调用基类的构造函数版本  放在子类构造函数第一行   
     super.  例如:super.data          在子类访问基类的数据
     super.  例如: super.tostring();  访问基类成员方法
(9)如果基类和派生类有同名的成员  作用域不同 互不影响

(10)类对象初始化过程:
1、static成员变量初始化
2、static块初始化
3、实例成员变量的默认初始化
4、实例块初始化
5、构造函数

 (11)内置类型有空间即可操作   
面向对象:对象和空间是分离的 ,有对象一定要占空间 ,有空间不一定有对象 ,不能创建空间 而是申请;

  (12)先进行 静态初始化    //只调用一次
                 实例初始化
         构造函数

你可能感兴趣的:(java基础)