一.java的特性

  • java语言由JamesGosling和BillJoy 的指导下由Sun公司开发的。
  • java是编译语言也是解释语言   java源代码----> 字节码--->java运行时解释器执行
  • java指定所有基本数据类型的大小
  • 除基本数据类型为,java中所有对象都可以通过引用来访问(一种‘安全性指针’,不能进行算数运算)
  • Java所有操作都是传值操作
  • java 不支持默认参数
  • java是面向对象语言,代码的基本单位是类

                   1  类的组成:

                                    1.数据项(也称变量/字段) 2. 函数(也称方法)

                  2.一个类可以创建不同的对象,每个对象都是同一个类的实例.  类相当于模板,对象相当与通过模板制作出的个体

                  3.通过引用访问对象,    类类型的变量即为对象的引用  A obj1 = new A();  //变量obj1就是对new所创建的对象的引用

                  4.一个类可以有多个子类,但只能有一个父类(超类),唯一例外 Object类,它无父类

  • 不允许自定义操作符重载,java中唯一重载的运算符 ‘+’,用于字符串连接 ,和算数加法运算
  • 没有源代码预处理器,因此没有 宏、#define 语句或条件编译
  • main() 方法是应用程序的入口,每个java应用至少包含一个带有main()方法的类 
  •  项目名全部小写 包名全部小写
     类名首字母大写,每个单词的首字母都要大写。
    变量名、方法名首字母小写,每个单词的首字母都要大写。
    5、 常量名全部大写
    如:public static final String GAME_COLOR=”RED”;
  • 以{ } 分割代码块
  • java的安全模型 

从内到外 :1.java二进制码   java运行时系统中固定的部分

                    2.字节码校验器(静态的校验 一种数学“定理证明机”)

                    3类加载器   负责将一个或多个java类的字节码置入解释器中

                    4.安全性管理器() 

                    5系统资源(应用级:文件系统、网络端口、窗口环境)

二.java的数据类型 运算符  

0注释

//  单行注释

 /* 多行
注释
       
*/

/**
 * 块注释  (文档注释)
 *习惯每行以*开头
 *有java SDK的javadoc程序抽取并将其生成产HTML文档  前导的空格和*都会被忽略
 *文档注释可以出现在类 方法 变量 定义之前
 *                    说明                 应用于           作用
 *@see              相关类名             类 方法 变量       建立指向相关类文档的超文本链接
 *@author            作者名                 类             标记作者
 *@version            版本                  类             标记版本
 *@param             参数名和描述          方法             
 *@return            返回值描述            方法
 *@exception         异常名和描述          方法
 *@deprecated        声明某项过时         类 方法 变量     
 *@since             在添加项的时候提示API版本  变量   
 *以@开头的行解释为针对文档生成器的特殊指令
 */

1.数据类型

               数据种类 分为两种 1.基本类型  2. 引用类型

 按值传递

类型

定义

boolean

true 或 false

char

16位Unicode字符

(2字节的无符号整数)

byte

 8位有符号的二进制整数

short

16位有符号的二进制整数

int

32位有符号的二进制整数

long

64位有符号的二进制整数

float

32位IEEE754 浮点值

double

64位IEEE754浮点值

       变量

                      以字母开头,可由字母 数字 _ $ 构成,不能与关键字重复

2.语句

       声明 

                   类型名 变量名空格隔开    int a;

       初始化 :在声明的同时将其赋值

int a = 0+5;
int oct = 0123;//指定8进制数      以0开头
int hex = 0xFFFF; //指定16进制数  以0x或0X开头
int bin = 0b10100101; //指定2进制 以0b或0B开头
boolean flag = true;

 1. 小数默认类型是double 对于float类型需要用F或f显示的指明

float f = 3.54f;//f或F 必须 
double do = 13513.153135;

 2. 类型转换

  •  java中出现的整数(整数直接量)如 0  100 121 -5 默认为int类型
  • 故声明byte short long是需要显示的类型转换
  • 当范围小的类型赋值给大范围的类型时,自动往大类型的方向转换 即隐式类型转换
  • boolean不参与类型转换
  • 在整数直接量中可以使用_下划线 分割数字
long x = 1010_1515;// 出现隐式类型转换 (默认的)int型转换成long
long l = 1E9L;//L或l  必须  为与1进行区分 建议使用L  指明这个整数位long类型
short s=(short)500
byte b=(byte)2;

3.关于字符型

1. char 字符直接量必须在''内 可以为字母 数字 字符

char c = 'a';
char b = '好';
char x = 0x9a12;//按照十六进制的方式 
char d = '\u122c';//按照Unicode字符形式

2.  转义序列:\uxxxx(x为16进制)Unicode编码序号  和 特殊字符的转义 如:\b  \n  \'  \"  \\

Unicode转义序列会在解析代码之前的到处理(包括注释中的) 

如  "\u0022+\u0022"  其结果为"" 并不是"+"  (\u0022 为")

// \uers 
得到:“ java:非Unicode转义” 的编译错误

 

        声明 赋值    if  ;if else;if elseif else; for; while;do while;switch;break;continue;//与c同

           try catch 和finally ;// ..

           不可达语句 编译时出错

//不可达语句 编译时出错
if(1<2)
 return;

           表达式 的值 

                             数字类型 (算术表达式)

                             引用类型(对象分配)

void(不返回任何值得方法)
3.运算符

     算术:char byte short int long float double

    整型:char  byte short int long 

优先级

操作符

操作数类型

 

1

++ --  + -

算术

 

自增 自减  单目加 单目减

前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。

后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算 

1

~

整型; 

按位取反

1

!

布尔; 

逻辑取反

1

(type)   

任何类型

类型转换   

2

* / %

算术

乘除 加减

3

+ -

算术

加法和减法

3

+

字符串

字符串连接

4

<<    >>

整型

<<左移 高位舍弃,低位补0  

右移(有符号扩展的右移, 低位舍弃,高位补符号位)            位运算

4

>>>

整型

无扩展的右移(高位补0,)                        位运算

5

instanceof

对象

类型比较         子类是父类的类型,但父类不是子类的类型

5

< > <=  >=

算术

 运算 大于 小于 小于等于 大于等于   关系运算

6

!=   ==

基本类型

 不等  等于                 (基本类型时:判断变量内容是否相等)              关系运算

6

!=  ==

对象

引用的相等和不等     (对象时:判断变量引用对象的内存地址是否相同) 

7


整型 或布尔

按位与  逻辑与(AND)    

8

^

整型 或布尔

按位异或 逻辑异或(XOR)

9

|

整型 或布尔

按位或  逻辑或 (OR)

10

&&

布尔

条件与          逻辑运算符       (特性: 短路)

11

||

布尔

条件或          逻辑运算符   

(会短路 如: x||y 若x为true,则编译器将不看y的值 ,仅计算第一个值,仅当有必要时才计算第二个操作数的)

12 

? :

N/A

三门运算符   条件运算符

13

= + = - = * = / =%= >> = << =&= ^ = | =

任何类型

赋值

关于关系运算符 ==

//情况1  基本类型  看值 
    int i = 2;
    int j = 2;
    System.out.println( i==j ); //true

//对象以String为例
    //1 将直接量赋给String
    String str = "AB";
    String str1 = "AB";
    System.out.println( str==str1 ); //true 
    //2 以new创建
    String strNew = new String("AB");
    String strNew1 = new String("AB");
    System.out.println( strNew==strNew1 ); //fasle
    System.out.println( str == strNew );   //false
    //结论: "==" 比较的是变量名的值,所谓变量名的值可以理解为变量名存储变量的地址
    //直接量赋给String时,相同直接量存储的地址相同
    //使用new将会在Heap堆申请一块新的内存来创建对象
//以数组为类
    int []iArray = new int []{1,2};
    int []iArray1 = new int []{1,2};
    int []iArray2 = iArray;
    System.out.println( iArray == iArray1 );//false
    System.out.println( iArray == iArray2 );//true