Java高级编程2-姜国海

①数组:

int [] a;//未初始化变量  int a[] 也可以 不过不常用
double [] b = null;//已经初始化的变量

养成良好习惯,声明变量的时候要初始化
函数内的局部变量不会自动初始化

成员变量如果自动初始化
int 默认是0
引用变量默认为null

int [] a = new int [10];
数组里面的数据默认为0

boolean [] ba = new boolean [10];

Student[] sa = new Student[10];//该引用变量 创建了 一个学生数组的引用对象

for(int i=0;i<sa.lengtn;i++){//任何对象都有一个length
    sa[i] = new Student();
}
学生对象在内存中可能不连续

二维数组
int[][] a = new int [2][3];
两层循环进行初始化

int [][] a = new int [2][];
//int [][] a = new int [][];//错 必须指定数组长度
a[0] = new int [5];
a[1] = new int [6];

②运算符

按优先级:
算数运算
关系运算
逻辑运算

模运算的符号位与被除数的符号位相同,与除数的符号无关

前置++ 后置++

算数运算的结果不能低于 int 类型

Eg:
byte b = 6;
byte c = 7;
b = b + c;//执行出错,b+c自定提升为整形
b = (byte)(b + c);

强制类型转化可能出错
int i = 1000;
byte b = (byte) i;//结果为-24

op 为运算符
x = x op y;
x op= y;

byte x = 0,y = 1;
x = x + y;//语法运算
x += y;// += 隐含类型转换

提升运算
short s = 5;
int i = s;
交换顺序不可以,除非强制类型转换

小类型可以向大类型赋值
byteshortintlong,float,double

byte [] ba;
int [] Ia;
不可以互相赋值
<< 左移
>> 右移
>>> 无符号右移运算,符号位补0

int i = 0;
byte b = 6;
long l = 24L;

i>>33;//虚拟机会自动和32取余
b>>33;//虚拟机会自动和32取余,提升为 int
l>>65;//虚拟机会自动和64取余

instanceof

③逻辑运算

!逻辑非,只接受boolean类型的变量
~ 位反
& 位与 
^ 位异或
| 位或
true | falsetrue

短路的逻辑运算
&&,||//只接受boolean类型的变量
先看左侧的表达式的值,如果第一个可以判断整个逻辑运算的真假,第二个逻辑运算不执行

三元运算符
a?b:c

Eg:a?4:4.5  //整个表达式的类型是double 编译的时候就需要知道类型
如果a为真时,返回4.0

④包与编译

解决命名冲突的问题


package a;
//子包package a.b.c;
class Student {

}



其他类里面访问

import a.b.c.Student;
import a.b.c.Dog;

//import a.b.c.*;//导入该包下的所有类
//Java Javax 不可用于报名开头

void a() {
    sl = new Student();
}
类名冲突

import java.sql.*
用全名

javac -d d:\  编译的时候源文件生成放在哪
包名变成文件夹的名字,类名变成java文件的名字 
不加-d在编译的时候如果源文件里面引入包的话,丢失包信息
package 的信息

类名是公开类的话,源文件的名字要和类名一致

javac -d d:\java  *.java //编译java文件夹下所有java文件

java -cp //类的路径,可以加上绝对路径,方便找到类的位置

notepad //path变量里面存了 notepad 记事本

包名全部用小写

-d . 当前目录

jar 文件

.jar 

jar

⑤继承

class Employee {
    String id;
    String name;
    float salary;
    public void work(){
    ;
    }
}
//只有一种继承方式,子类继承父类的一切特征,
//单一继承,一个类的父类只有一个,不声明的时候,默认继承object
//所有的类都是直接或者间接继承Object
//语言包中类自动导入,不需要再次导入
//import java.lang.*;
class ProjectManager extents Employee{

}

⑥访问权限

privatepublicprotected

package a;
class Student {
    private int age;//只能在类里面访问

}

同包权限,不声明任何权限,默认是同包,同一个包下可以访问

//protected 同包可以用
public class Teacher {
    protected
}
子类通过继承访问父类的protected成员变量,子类通过子类的类型访问,即子类的成员函数访问
不可以直接对父类的成员进行访问

⑦修饰符

final,static

final 常量


public class Student {
    final int i;//wrong,必须赋值
    final int i=0;//对,必须赋值
    void student(){
        final int i;
        i = 3;//只可以赋值一次
    }
}

final 修饰类 没有子类
final 修饰函数 ,在子类里面不可修改,即不可多态

static 仅仅依附于类,与成员函数无关


访问静态成员,直接用类名加.
也可以引用变量来访问类的静态成员,但是不建议这样写


全局静态常量

public final static int i;

静态函数不可以访问非静态的函数
非静态函数可以访问静态的函数

猜你喜欢

转载自blog.csdn.net/l1558198727/article/details/80893051