JAVA笔记(2)变量初始化,数组,包,继承,修饰符

变量初始化

未初始化的变量不能被使用。声明一个对象时要为他分配内存

Object obj=new Object();

int对象初始化时要为他指定内存。

int   i = 10;
int[] a = new int [10];

对象组:

Object[] obj=Object[10];//创建对象指针组。指向地址
for(int i=0;i<10;i++)
    obj[i]=new Object   //为对象指针组分配内存。

对象组内的变量在内存中不是连续的。
任何数组对象都有一个成员变量都有.length成员,存有数组的长度。

obj[i].length;

二位数组的声明和初始化

int[][] a=new int[2][3];//创建二维矩阵数组
for(int i=0;i<a.length;i++){
    for(int j=0;j<a[i].length;j++)
        a[i][j]=9;
}

int[][] a = new int a[2][];//1、可以是不同长度 2、数组生成时必须指定长度。
a[0]=new int [5];
a[1]=new int [6];

运算符

运算符:一元二元三元。算数关系逻辑。

a+b;
a-b;
a*b;
a/b;
a%b//和被除数符号位一致,和被除数符号位无关。
a++;
a--;//自增自减

算术运算的结果的类型不能低于int类型。低于Int类型的数据自动提升为int。

byte b=0;
byte b1=6;
byte b2=6;
b=b1+b2;//错误
int i=0;
i=b1+b2;//正确
b=(byte)(b1+b2);//正确

强制转化运算:砍掉多余的字节。

int i=1000;
byte b=(byte) i ;//i=-24

浮点数转化为整数:砍掉小数

x = x op y;
x op = y;

byte x=0,y=1;
x=x+y;//编译错误提升类型为了int 
x+=y; //不会出错。会进行强制数据类型转化。

小类型可以赋值给大类型,但是大类型给小类型赋值就会报错。

大小关系从小到大:byte short int long float double 
byte[] i...;
int[] j...;
i=j;//报错
j=i;//报错

位移运算

>>//右移
<<//左移
>>>//无符号移位。符号位永远都补0

左移有可能改变符号位(溢出)。

int i=...;
i>>33;
i>>1;
结果相等。虚拟机会将33%32后对i进行移位

逻辑运算 优先级低于算术运算
与或非,位反运算。

i=~i;//每个比特位取反后加1

优先级

&>^>|
&& ,  || 只接受boolean类型的数据。

短路的运算符:

function_a() && function_b()function_a()为假,就不会解析function_b()可以理解为function_b()不会运行。

三元运算符

a?4:4.5
//整个表达式的类型由后面两个操作数最大的类型来确定。上面的表达式返回范围在{4.0,4.5}之中。

命名冲突

//可以定义包来解决命名冲突的问题。
package a;
a.Object;
//对类的名称进行了延长

包名冗余:多层包结构

import a,b,c.Student;
//在类声明之前在package之后

java,javax是java官方定义的包名前缀
声明包名时不能用java和javax开头

import java.util.*;
import java.io.*;
import java.net.*;
import java.sql.*;

class A{
    java.util.date;
}

在源文件时声明包:

package a;
public class Helloworld{
    public static void main(string arg[]){
        System.out.println("hello world ");
    }
}

公开类保存为文件时,文件名必须和类名一致。
以上文件编译时必须加上javac -d选项。不加这个会丢失包的信息。结果就是找不到这个包

>javac Helloworld -d+文件夹名,缺省则存在当前目录。
>java a.Helloworld

文件夹的好处:1、存放同名文件,2、名称分类管理。
包的作用与之类似。
编译时编译器会将包的信息将转化为文件夹的层次结构。

path 变量:可执行程序的搜索目录。
所有包名小写。

javac xxx.java -d -classpath (-c) 
//-classpath 用来导入类路径分隔符用分号(windows),ubuntu 苹果用冒号。

java文件在发布时用的是.jar文件。
用jar命令打包

继承

java只有公有继承,子类继承父类的一切特征。并且是单一继承

    //默认java.lang.Object为所有类的基类。
    //java.lang为java的原包,自动导入。

访问权限

//访问权限 private public protect 
//没有对应的修饰符为同包权限。
package a;
class student{
    private int age;//只能在类体中访问
    char[] TeacherName;
}
class teacher{
    //可以访问TeacherName;
}

保护权限:

public class teacher{
    protected float money;
}
//同包可访问,派生类可访问。

派生用extends关键字。
protected 只能用子类名来访问父类中的某个成员。
不能直接用父类的名来访问。

public class boss extends teacher{
        public static main(string arg[]){
            teacher t=new teacher();
            t.money++;//报错
            boss b=new boss();
            b.money ++;//正确
        }
}

同包权限:

class A{
int i=new int;
}//只能在这个中访问

修饰符

final

final int i;
i=5;
//之后再不能对i赋值

final后跟初始值,可以用来修饰变量也可以用来修饰类,修饰符之间没有顺序要求

final class A{
    //A没有子类
    final void a(){
        //a不允许被覆盖
    }
}

static

class student{
    static int ClassNum;
    //与任何实例无关,有无对象存在ClassNum有一只存在。(类共享)
    //要通过类名来访问类的静态成员。相当于全局变量。
}
System.out=null;//错误
//System.out 是final不允许改值,可以通过类名访问,所以是static public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值