从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