Java 基础 (一)

由于有C#的基础,Java的基础知识基本是略过,这里当做复习一遍吧!

Java的三种技术架构:

  • JavaEE:(Java PlatForm Enterprise Edition) Java开发企业级的应用,主要针对Web
  • JavaSE;(Java PlatForm  Standard Edition) 完成桌面程序的开发,是其他两个的基础
  • JavaME:(Java PlatForm Micro Edition)开发电子消费产品和嵌入式设备,如Android

Java数据类型

注意:Java的符号集采用的是Unicode字符集,一个字符占用两个字节,不光是英文还是中文还是其他字符;

Java程序的基本结构:

大致可以分为:包,类,main()主方法,标识符,关键字,语句,注释等。

关键字:

Java 基础 (一)_第1张图片

(1)基本数据类型(八个):

整形

  •  byte字节型 1字节 = 8bit(位)  最大存储数据量是255,存放的数据范围是-128~127之间,

   注意范围,避免数据溢出  如:byte i = 47

  •   short短整型 2字节(16位) 16bit最大数据存储量是65536,数据范围是-32768~32767之间    short  = 234
  •   int整型 4字节(32位) 32bit最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1   int x=23
  •   long长整型 8字节(64位) 64bit最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1  long x = 45L

浮点型

  • float float单精度 4字节 32bit数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F  float x = 2.3F
  • double双精度8字节 64bit数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加  double x = 2.3D

字符类型:代表16位Unicode字符, char字符型用单引号   char x = 'X'

布尔类型:boolean布尔型true/false(只有真假两种结果) boolean x  =true

注意:一个bit是计算机存储的最小数据单位。即1位,只可能是0或1;一个byte由八个bit组成,即八位;可以表示256个整数值,又由于byte在Java中有符号之分(即正负数),所以范围位-128~127;一个char在Java中由两个byte组成,用来表示一个字符,即unicode编码,是无符号类型;int和float在Java中由4个byte组成;每个long或double型变量占用八个byte的存储空间;1T=1024G,1G=1024M,1M=1024K,1K=1024B 

补充:3种进制

  • 十进制:十进制整数2
  • 八进制:以0开头表示八进制
  • 十六进制:以0x表示十六进制

基本数据类型和封装类:

Java 基础 (一)_第2张图片

Java 基础 (一)_第3张图片

 

变量和常量:申明变量 int age; char char1 = 'R';  申明常量:final double PI = 3.1415926D;final boolean BOOL = true;

运算符

  •  算数运算: +   -   *   /   %  
  •  自增,自减:++    --  
  •  比较运算符:>   <   ==    >=   <=   !=  
  •  逻辑运算符:&&   &   ||    |    !
  •  位运算符:~(按位取反)   &   |   ^(按位异或)  <<(左移)  >>(右移)   >>>无符号移位
  •     三元运算符:?   :     如:boolean b = 20<45?true:false;

PS: op1<<op2 将op1在内存中的二进制数向左移动op2位,左边移动的部分补0;

例子:不适用其他变量 实现2个数交换

     A = A^B;B=B^A;A=A^B

数据类型间的相互转换:

自动类型转换:数据类型根据占用空间的大小分为大小不等的级别,空间小的级别低,空间大的级别高;遵循低级到高级的原则;如int 和byte ; 

强制类型转换:当把高精度的数复制给低精度的值,需要强制类型转换;如int a = (int)32.23;long a = (long)56.1;

PS:boolean 不能和其他数据类型相互转换;

注释:

  • 单行注释://
  • 多行注释:/*    */

(2)对象数据类型(应用数据类型,类类型)

  所有用class,interface,abstract Class定义的类,String 是Java中的一个类;

结构化程序

      if  ,if... else ,if... else if,  switch, do while , while , for ,foreach,break ,continue,return

对foreach的特别说明:和C#中有点小小区别

Example: for(元素变量x:遍历对象obj)

      {

        引用X的java语句

      }

对break 的一点说明:在switch中终止下面case句子的比较;在while,do...while中强制终止循环;

对continue的一点说明:只能用在while,do ...while,for中;跳过下面的语句,进行下一次循环;

对return的一点说明:从一个方法返回,并且将控制权交给调用它的语句;

数组

一维数组 

申明一维数组两种方式:   (1)数组元素类型   数组名字[]; (2)数组元素类型[] 数组名字;

                                           new 数组元素类型[元素个数]; ( 使用new 为数组分配内存空间,元素值都为默认初始化为 0)

创建二维数组:(1)数组元素类型 数组名字[][];    (2) 数组元素类型 [][] 数组名字;

创建三维数组:(1)数组元素类型 数组名字[][][];  (2)数组元素类型 [][][] 数组名字;

经典案例:  对矩形转置  

数组基本操作: 遍历数组;填充数组;对元素排序,复制数组(Arrays的copyOfRange和copyOf);冒泡排序,直接插入排序,快速排序

字符串

String 属于引用类型;

初始化创建一个对象 String s = new String();  

用一个字符数组创建对象 String s = new String("good")  等价 char [] a = {'g','o','o','d'}; String s = new String(a);  

提取数组的部分创建对象  Char[]  a= {'a','d','f','g','h'}; String s = new String(a,2,3); 等价 String s = new String("fgh");

字符串操作

 .Trim() (去掉前导和后倒空格) 

StringTokenizer(string source,string separate )     ReplaceAll( )去除所有空格

StringBuilder()  新创建的默认是16个字节 StringBuilder在多线程中不安全     建议使用StringBuffer

面向对象基本知识(OOP)

Java中类大概可以分为三种:

(1)类:用class定义且不含有抽象方法的基本类;对属性和方法的封装,将内部数据隐藏起来;

          用Static 修饰的变量,常量和方法为静态,为类共享;调用方式: 类名.变量(方法,常量)

   类的修饰符如下:

Java 基础 (一)_第4张图片

this关键字   引用就是对一个对象的引用,除了可以调用成员变量和成员方法外还可以作方法的返回值;

super关键字  访问父类的方法和属性 

Java虚拟机(JVM)自带垃圾回收机制(被视为垃圾情况: 只有用new 创建的对象才能JVM被回收,Java提供了finallize,用户可以在自己类中定义这个方法,如果定义了该方法,垃圾回收时,首先调用该方法,并且在下一次垃圾回收动作时,才真正回收占用的内存):

  对象引用超过其范围;

  将对象赋值为null;

(3)接口:用 interface 定义

  Java 基础 (一)_第5张图片

Java 基础 (一)_第6张图片

实现接口  用implements关键字    继承用extends关键字 

注意:接口中的方法全部是抽象(Abstract)方法,正式因为全部都是抽象方法,所以,省略 abstracts不写;

          成员变量全部是Public Static final (可以省略不写)

PS:注意抽象类和接口区别:

    抽象类可以有抽象方法,也可以不是抽象方法

    成员变量可以不是public static final

定义接口抽象类和接口都是为了被继承:接口 (Implements(实现),因为接口中全部是抽象方法,所以 所有方法必须被重写覆盖@Override)    抽象类(extends)

Java 基础 (一)_第7张图片

(2)抽象类:使用 abstract class 定义的类,它可以含有,也可以不含有抽象方法

    继承规则(注意super和this对父类和子类的访问权限控制)

    类可以继承类,可以继承抽象类,可以继承接口;

    抽象类可以继承类,可以继承抽象类,可以继承接口;

    接口只能继承接口

封装(encapsulation):封装使得数据和对数据的操作集成在一起,从而对使用该类的人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏。封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护数据。

继承(inheritance):继承使用已存在的类的定义作为基础建立新类,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用;继承是为了重用父类代码,同时为实现多态性作准备。

多态(polymorphism):方法的重写、重载与动态连接 构成多态性;包括设计时多态和运行时多态;C++允许多继承,但是增加了编程的复杂性,所以Java只允许单继承;虽然保证了继承关系的简单明了,但是势必在功能上有很大的限制;所以,Java引入了多态性以弥补不足,此外,抽象类和接口也是解决单继承规定限制的重要手段。同时,多态也是面向对象编程的精髓所在。

接口(interface):接口的定义和类的定义很相似,只是关键字不同,接口的关键字为interface;声明格式如下:interface  接口名 { }

    如果一个类实现了某个接口,就必须要实现这个接口的所有方法,即使实在没有内容只是一个空的方法体也要写。而且每个方法都默认是public的,所以实现时代码一定要用public做修饰,参数个数,类型以及返回值的类型都必须与接口中的声明相一致。

 

 1 public class TransferProperty
 2 {
 3     public void TransferProperty()
 4     {
 5 
 6     }
 7     int i = 47;
 8     public void  call()
 9     {
10         System.out.println("调用call方法");
11         for (i;i<3 ; i++) {
12             System.out.println(i+"");
13             if (i==2) {
14                 System.out.println("\n");
15             }
16         }
17     }
18 }
19 
21 public static void main(String[] args) {
22     TransferProperty t1 = new TransferProperty();
23     TransferProperty t2 = new TransferProperty();
24     t1.i = 60;
25     System.out.println("第一个实例调用输出为:\n");
26     t1.call();
27     t2.i = 100;
28     System.out.println("第一个实例调用输出为:\n");
29     t2.call();
30     System.out.println("输出完毕!");
31 }

 

对象的引用:Book newBook = new Book() ;引用只是存放对象的一个内存地址,并非存放一个对象

如何比较两个对象是否相等:“==”   “Equals”

Equals 是String中的方法,用于比较两个对象引用的内容是否相等,“==” 判断的是两个对象引用地址是否相等;

 

单例模式的应用

 

 1 public class Emperor
 2 {
 3     private static Emperor emperor = null;
 4     private Emperor()
 5     {
 6 
 7     }
 8     public static Emperor getInstance()
 9     {
10         if (emperor==null) {
11             emperor = new Emperor();
12         }
13         return emperor;
14     }
15 }

 

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