Java语法基础

来源:互联网 发布:汉王文本王扫描仪软件 编辑:程序博客网 时间:2024/06/14 03:56
原码,反码,补码
---------------------------------
1.正数和负数在计算机中都是以二进制补码的方式进行存储。
2.正数的原码,反码,补码相同
3.负数的补码 = 原码取反 + 1,符号位取反时不发生变化


二进制及其转换
---------------------------------------------------
进制间相互转换,八进制(0)转二进制是一位变成三个二进制位(0b,0B),

十六进制(0x,0X)变成四个二进制位。

实例:十进制转十六进制


class Demo{public static void main(String[] args){Change();         }public static void Change(){int num = 64;                int temp = num & 15;                String str = (temp>9) ? (char)(temp-10+‘a’)+"" : ""+temp;                num = num>>4;                temp = num&15;                String str2 = (temp>9) ? (char)(temp-10+'a')+"" : temp+"";                System.out.println(str2+str);         }}


运算
--------------------------------------------
1.byte,char,short参与运算的时候都会自动转化成int类型。
2.简单类型与String类型进行+运算时,会转换成字符串。
3.int与浮点型参与运算时自动转换成浮点型
4.long定义是在数字后面加l 或 L
5.float定义时在后面加上f 或 F 
6.整形默认是 int类型
7.浮点型默认是 double类型


path环境变量
---------------------------------------------
配置环境变量是为了在任何地方都可以执行程序
PATH: %JAVA_HOME%\bin
JAVA_HOME: 安装的具体路径 C:\Program Files\Java


除法运算
------------------------------------------
除法运算的结果取决于被模数
int i1 = 12 / 5;  2 
int i2 = -12 / 5; -2
int i3 = 12 / (-5); 2
int i4 = -12 / (-5); -2

逻辑运算符
----------------------------------------
1.& 和 &&的区别
  & 左边的结果无论为真或假,右边都参与运算。
  &&左边的为false,右边不参与运算。
2.| 和 ||的区别
  | 左边的表达式无论为何值,右边都参与运算。
  ||左边为true,右边不参与运算。


赋值运算符
------------------------------------------ 
+= -= = /= %=
例:short s = 2;
    s += 2; 参与运算不会改变数据类型。
    s = s+2;编译不通过,与int类型数据运算,变为int型,不能赋值给short型。


获取键盘输入
-------------------------------------------
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();//从键盘输入获取整数
String str = sc.next();//从键盘获取字符串

switch
------------------------------------------
switch语句case里面是值,不能是表达式,为byte,int,short,char,枚举string
遇到break终止操作。


类和对象
----------------------------------
类是对象的模板,对象是类的实例


构造函数:初始化对象
--------------------------------
1.方法名和类名相同
2.没有返回值。创建对象时自动调用构造函数
3.一个类可以有多个构造函数,在创建对象时选择调用,各个构造函数构成重载关系
4.每个类都有一个默认的构造方法,如果显示提供构造方法,不在提供默认构造方法


this
----------------------------------------
1.this是属于一个对象的,不属于类
2.this不能再类定义的外部使用,只能在类定义的方法中使用。


类变量,类方法
----------------------------------------
1.类变量和类方法加static修饰
2.类变量和类方法属于整个类所有,不属于对象,通过 类名.类方法(类变量)直接调用
3.static静态方法只能访问static变量,不能访问非静态变量
  非静态方法可以访问非静态变量和静态变量
4.原则上类变量用类方法去访问或操作。
总之一句话:静态的访问静态的。


面向对象编程的特征
--------------------------------------------
1.抽象:把一类事物共有的属性和方法提取出来,形成物理模板
2.封装:把抽象的数据和对数据的操作封装在一起,数据只能通过相应的方法访问
3.继承:解决代码复用,Java中类的继承是单继承,只能有一个直接父类
4.多态:父类引用指向子类对象
使用接口引用实现类的对象
成员变量不能被覆盖


方法重载(overload)
---------------------------------------------
1.方法名相同
2.参数数据类型,个数,顺序至少有一个不同
3.返回值和访问权限不同不构成重载


方法覆盖(override)
-----------------------------------------------
1.子类方法返回值类型,参数,方法名同父类的完全一样
2.子类方法不能缩小父类方法的访问权限(大于等于父类访问权限)
3.继承后可以重写但是不能抛出异常。


抽象类(abstract)
------------------------------------------------
1.抽象类不能实例化
2.抽象类可以没有抽象方法
3.如果有抽象方法,该类必须声明为抽象类
4.抽象方法不能有方法主体。
5.继承该抽象类的子类必须重写抽象方法才能创建对象


接口(interface)
------------------------------------------------
1.接口不能被实例化
2.接口中的方法都不能有方法主体
3.接口不能继承其他的类,但是可以继承其他的接口(多继承)
4.接口中可以有变量,但是不能用private和protected修饰
  接口中的变量本质上都是static而且是final的,不管你加不加static修饰


final
------------------------------------------------
1.final修饰的变量是常量,不允许改变,且在初始化得时候必须赋值。
2.final修饰的方法在子类中不允许被重写。
3.final修饰的类为最终类,不能被继承,不能有子类。


static静态变量可以不给初始值,默认为0,但是有final修饰必须要赋给初值。


几种数组初始化时候的默认值:
--------------------------------------------------
short ,byte ,int long 默认为0
float double 默认为0.0
char 默认为'\u0000'
String 默认为null(空对象)


try catch finally语句执行顺序
----------------------------------------------
程序有异常会先执行异常里面的代码,如果捕捉到的代码块里面有return语句会先
由虚拟机记录,先执行finally语句块然后在执行return语句。
catch捕捉异常-->finally语句-->catch语句块中的return语句。


Java数组
-----------------------------------------------
数组的长度arr.length
最大下标 arr.length-1
int[][] arr = new int[10][3];
arr.length:数组中一维数组个数 10
arr[1].length:一维数组中的元素个数 3


成员变量和局部变量的的区别
---------------------------------------------------
1.在在类中位置不同:成员变量在方法外,局部变量定义在方法内
2.在内存中位置不同:成员变量在堆中,局部变量在栈中
3.生命周期不同:成员变量随对象的创建而创建,局部变量随方法的调用而存在
4.初始值不同:成员变量有默认初始值,局部变量没有默认初始值,必须先赋值再使用。
注意:成员变量和局部变量的名字可以一样,再方法中掉用的时候采用就近原则。


形式参数问题
--------------------------------------------
基本类型:形式参数的改变不会影响实际参数的值
引用类型:引用是操作地址值,形参的改变会影响到实际参数的值。
引用类型中,String类型比较特殊,String类型在赋值的时候会重新开辟一块新的内存空间
对赋值的变量进行操作的时候不会影响到原来的值。


匿名对象
-------------------------------------
匿名对象只使用一次,可以做函数参数传值,用过后被垃圾回收器回收。


内部类
---------------------------------
1.定义在class类的内部
2.编译产生Out$Inner.class
3.内部类访问外部类的局部变量,需要加final修饰,不能更改。
4.内部类访问外部类的成员变量,通过对象.this.成员变量名访问。


二叉树特性
-----------------------------
1.包含有n(n>0)个节点的二叉树边数为n-1
2.若二叉树的高度为h(h>=0),它最少有h个节点,最多有(2^h)-1个
3.包含n个节点的二叉树的高度最大为n,最小为


局部变量、成员变量、类变量的区别
-----------------------------------------
1.局部变量存在栈中,随方法的调用产生,方法调用结束后消失,必须先初始化才能使用
2.成员变量存在堆中,随对象的产生存在,对象消失就消失,有默认初始值
3.静态变量存在方法区中,随类文件的加载而存在,属于所有对象共有,有默认初始值。



类里面的执行顺序
----------------------------------------
静态代码块->构造代码块->构造函数
其中:静态代码块只执行一次
 构造代码块和构造函数每次创建对象时都执行
原创粉丝点击