标签

从0开始学java...蕾姆我的...其他你们随意

By 小鸟游·飒

位运算符概念

java的所有位运算符都是针对二进制操作的!也就是说不管是初始值是依照何种进制,都会换算成二进制进行位操作。

&(与)

12&5    ->    1100&0101    =    4    ->    0100

|(或)

12|5    ->    1100|0101    =    13    ->    1101

^(异或)

12^5    ->    1100^0101    =    9    ->    1001

~(取反)

~12    ->    ~1100    =    -13    ->    1111111111111111111111111111111111111111111111111111111111110011

>>(向右位移)

12>>2    ->    1100>>2    =    3    ->    0011

<<(向左位移)

12<<2    ->    1100<<2    =    48    ->    110000

数组相关

与C不同,Java在定义数组时并不为数组元素分配内存,因此[ ]中无需指定数组元素的个数,即数组长度。而且对于如上定义的一个数组是不能访问它的任何元素的,我们必须要为它分配内存空间,这时要用到运算符new

int demoArray[] = new int[3];

demoArray.length    ->    *.length为该变量长度


附上代码:

// 第一个矩阵(动态初始化一个二维数组)

int a[][] = new int[2][3];

// 第二个矩阵(静态初始化一个二维数组)

int b[][] = { {1,5,2,8}, {5,9,10,-3}, {2,7,-5,-18} };

// 结果矩阵

int c[][] = new int[2][4];

// 初始化第一个矩阵

for(int i=0; i<a.length; i++){

    for(int j=0; j<a[i].length ;j++){

        a[i][j] = (i+1) * (j+2);

    }

}

// 计算矩阵乘积

for (int i=0; i<a.length; i++){

    for (int j=0; j<c[i].length; j++){

        c[i][j]=0;

        for(int k=0; k<a[i].length; k++){

            c[i][j] += a[i][k] * b[k][j];

        }

    }

}

for(int i=0; i<a.length; i++) {

    for(int j=0; j<a[i].length ;j++) {

        System.out.printf("%-3d", a[i][j]);

    }

    System.out.println();

}

// 输出结算结果

for(int i=0; i<c.length; i++){

    for (int j=0; j<c[i].length; j++){

        System.out.printf("%-5d", c[i][j]);

    }

    System.out.println();

}

字符串相关

  • 线程安全:

    StringBuffer:线程安全

    StringBuilder:线程不安全

  • 速度:

    一般情况下,速度从快到慢为 StringBuilder > StringBuffer > String,当然这是相对的,不是绝对的。

  • 总结:

    使用环境:操作少量的数据使用 String;

    单线程操作大量数据使用 StringBuilder;

    多线程操作大量数据使用 StringBuffer。

类的定义与实例化

注意!java与php不相同的地方是,java的class不需要new,而是用class名来取代new。而且构造方法没有任何的申明单词(如void)直接用class名的方法就是构造方法。

另外main()方法必须设置为public

修饰符 说明
public 共有的,对所有类可见。
protected 受保护的,对同一包内的类和所有子类可见。
private 私有的,在同一类内可见。
默认的 在同一包内可见。默认不使用任何修饰符。

public class Dog{

    String name;

    int age;

    // 构造方法,没有返回值

    Dog(String name1, int age1){

        name = name1;

        age = age1;

        System.out.println("感谢主人领养了我");

    }

    // 普通方法,必须有返回值

    void bark(){

        System.out.println("汪汪,不要过来");

    }

    void hungry(){

        System.out.println("主人,我饿了");

    }

    public static void main(String arg[]){

        // 创建对象时传递的参数要与构造方法参数列表对应

        Dog myDog = new Dog("花花", 3);

        // 访问成员变量

        String name = myDog.name;

        int age = myDog.age;

        System.out.println("我是一只小狗,我名字叫" + name + ",我" + age + "岁了");

        // 访问方法

        myDog.bark();

        myDog.hungry();

    }

}

请注意以下方法继承的规则:

  • 父类中声明为public的方法在子类中也必须为public。

  • 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。

  • 父类中默认修饰符声明的方法,能够在子类中声明为private。

  • 父类中声明为private的方法,不能够被继承。


访问控制符可以让我们很方便的控制代码的权限:

  • 当需要让自己编写的类被所有的其他类访问时,就可以将类的访问控制符声明为 public。

  • 当需要让自己的类只能被自己的包中的类访问时,就可以省略访问控制符。

  • 当需要控制一个类中的成员数据时,可以将这个类中的成员数据访问控制符设置为 public、protected,或者省略。


https://blog.csdn.net/yzc11111111/article/details/78233321

2018-04-28 11:01
暂时关闭评论
暂无相关评论