java足迹


3月31日

javac test.java => java test  and jdk 与 jre 的区别

快捷键:注释:ctrl+\  对齐:ctrl+actrl+i 复制整行:ctrl+alt+down 代码补全:alt+/

 syso:System.out.println("");

 main:public static void main(String []args){}

 pc:public class {}

 pm:public static void main(String []args){

 System.out.println("");

 }

首先java工程可以是一个含有完整功能的文件;跟c差不多的;包主要是含有逻辑功能都差不多的源文件;java就是源文件;一般一个java含有一个类(编译也是如此,类中可以有main,但是首先要符合条件还要再共有类中,否则就要指定路径了);包只是相当于一个命名空间,因为类太多了;全都是类;方法可以随意命名;公共类必须跟源文件同名,其他不要求;同一包内的类可以随意引用,方法自然也可以;其他包则要引入一下;结构就基本上是这样了;

super与this:

this只能引用变量,方法还是要先生成对象才可以调用(或者静态);this()或者加参数表示调用的构造函数(不需要析构函数);this调用变量一般是为了区别时采用

super()则表示父类的函数或者构造函数;java里所有的都是多态的,也就是近水楼台的;所以要super才可以调用;

所谓的机器语言大概就是微指令了;也就是二进制的封装;c或c++依赖平台,生成;而java有专门的解释器和运行环境,不依赖于平台;都是加载类而已;

对象类str1.equals("str2");==表示的是内存地址比较

str.hashcode();

java里面没有指针,所以都是用[]来表示的;

4月2日

Java多态主要用在父子类之间的相互转化,也就是参数时可以使代码更通用;应该是调用时子类里有所有的父类的方法,而引用是父类的,所以只能调用父类里面已经声明的,就是范围还是父类的,而内容是子类的而已;而super则是构造时才会用到,可以调用任意的父类的方法;而向下转型一般都是先向上转型之后的才可以成功,而且本来指向的就是子类对象,如果直接父类对象强制转换子类要用instanceof判定一下才可以,一般新添加了方法之类的就不可以了吧,向下转型之后,就是个子类对象了(一般在泛型编程比较多,就是模式化了吧);所以不能直接转,尽量判断一下,更不能直接调用;而c++中只有虚函数才多态,有虚指针之类的;纯虚函数则主要是用来声明抽象类的,后面是=0;

4月6日

c++中类的实例化用new就是申请的堆空间,因为需要delete;而且返回的是指针;一般在c++中只有数组的时候用;平常就是直接声明直接类实例化;那样用的是栈空间,直接程序自己动消除;java里面都是引用;保持形式严重相似就可以了;直接实例化;new(初始化)new[大小];分配多维数组时,一定要严格标准就可以了,严格前面没有,后面有全部维数;

java中跟c++类差不多的是类的实例化都是返回一个引用,应该都是在堆里吧;

java中子类对象一定可以是父类对象,也就是基类可以当做基本类型声明子类对象;而且调用的还是多态的,也就是子类的,除非用super();c++中则是虚函数是多态的,其他的按照数据类型调用;

假复制,浅复制,深复制:=是不能用来复制引用型变量的,只能改变的引用,指向的是同一个内存,哪怕字符串类都是(能变,有内存);浅复制:就是引用型还是同一个,但是字符串变了;深复制:就是都变了,相互独立了;主要结构化比较严重:要递归的克隆,而且要public实现cloneable接口;还要里面调用super.clone;而且好像还要返回类型要Obj;有点复杂;

java是全部都是多态,除非是final或者static了

克隆就是实现cloneable接口,然后public重载父类的clone方法,其实也是调用吧,只是强制转换一下;深克隆就是递归克隆了;已经重载完克隆的就可以直接调用就可以了;

异常:分为运行时异常(未检查异常(数组越界,空指针),未检查引起的),非运行时异常(检查异常(io异常,数据库异常)借助外部的);后者相对较严格,可能引起的错误也更严重吧;

try{} \n catch(){};或者throw(方法体内,而且一定会抛出的,多用来转型的或者具体输出信息的);throws方法声明处,可以多个,只是可能会抛出而已;finally{}是最后的,可有可无,一定会执行的,所以不能慎用return语句;catch可以多个,并且一般第先具体后抽象;上层调用方法时就要决定捕获或者抛出了;

集合类:

java里面的集合类感觉有点麻烦的,好像都间接的继承自collection,set和list;list应该就是连接吧,都是以连接为基本思想的吧;但是arraylist,有点搞不懂了,有size,isempty,get,set,add方法;唯一的好的就是可以自动增加大小了吧;应该还是跟array相近;

linklist就是纯粹是list了;有get,remove,insert;

vector:向量,同步;影响效率,多线程注意;

stack:栈,push,pop,peek,search,empty;

set:无重复;

map:好像是直接的一个接口;

子类有hashtable,hashmap(无需,而且hashcode不一定相同),treemap(自动排序);

arraylist 和 vector好像都是数组方式的,除了能自动增加长度而且方法都是自动实现的,只是时间长短而已;

4月7日

位集bitset:一般就是用来存储的位的吧,get(),set(),clear(),length(),and(),not(),or()等等;记住长度要加上1就可以了;

多线程:

多线程(同一程序)和多进程(操作系统多任务)

主线程一般是main函数,但是并不是先运行的,都是同一时刻运行的;然后线程一般都是实现runable接口或者继承Thread类(其实Thread类也是实现了runable接口);然后都要重写run函数(@Override),其中前者可以共享数据,而后者数据则是独立的;因为实现接口(new Thread(new Thread1('c'))).start只是有个可运行的目标而已,算不上一个实体,还是以进程为单位吧;而后者new Thread('c').start则是有自己独立的数据可能是有独立的栈吧;

其中API如下:

thread.start()使线程为可运行状态,得到时间片即可运行;

thread.yeld()使程序暂停运行,谦让一下时间片,如果优先级都比较低,则还是自己运行;

thread.sleep(100)使程序睡眠一段时间;睡眠期间不放锁(可能根本没那个概念);阻塞状态,然后得到资源之后还是就绪状态;(必须抛出异常才可以)

thread.join()等待调用的程序执行完,再执行其后面的代码;算是after you之类的;期间也是阻塞态;

还有同步:

synchronized()关键字:后面可以接代码或者对象实体;但是同步都是在对象锁的基础上的;也就是都是要得到对象才可以实现;即时关键字后面跟的是一段代码或者一个方法也是所调用的对象,对象只能有一个线程执行那段代码后者方法;

o.wait(100)使正在运行的程序休眠,并且释放锁;

o.notify()唤醒某一线程,使得到自己的锁;

o.notifyall()唤醒所有线程,公平竞争;

4月11日

编码:

unicode是宇宙编码,用两个字节,基本上所有的都能包括,但现在不够用了,但一般还在用;

UTF-8也是国际上标准编码,英文字符用一个字节,汉语用三个字节编码;国际通用,一般用这个,支持最广;

GB2312是仅支持简化汉字的字符截;用两个字符表示;

GBK是支持繁简汉字的,范围大一点;

GB18030是支持少数民族的文字;使用1/2/4位混合表示;其中2字节的跟原来兼容

Unicode与utf-8的关系:

前者是一种标准,后者是一种实现;也就是根据表里面的对应字符值选择合适的utf-8编码方式(具体就是英语字符按照ascII,其他的按照可变长编码,什么前N个设为1然后接上一个0;后面字节的都是10开头,其他的从后向前把Unicode码按进去,不够补零);大小端就是先存大的就是大端;先存小的就是小端;然后编码方式:ANSI指的就是美国国家标准协会,英文的按照asc,中文的按照GB2312;然后Unicode是小端模式,直接按照两个字节存储了;大端也是一样;只是前面通过EF FF来标注大小端;其中EF在前是大端;utf-8则是可变字符编码;

基本类型有8个:byte,short,int,long,都是整型,并且int上归拢;float,double是浮点型4,要F/f后缀,d8则是默认,不需要;而且一般都是有包装类的,可以利用他们得到相应的值或者强制转化吧;char型变化比较大,属于Unicode编码,是两个字节,前128位则是跟asc一样的,全是单引号赋值;也可以整数值赋值,都差不多;用Unicode编码时要两个字节必须/u开头;boolean则是只占一位,因为只有两个值false或true;这跟c++都有所区别;

 

还有Date类,有若干种构造函数,也有格式函数;用的时候再查吧;

原来异常中的检查和非检查是编译器是否去检查的意思;一般主观的就不检查了,也是可以不作处理的;但是客观的,就必须要有处理程序或者抛出异常,例如文件IO异常,因为不取决于程序本身;所以必须要有处理;

中文乱码的处理一会儿再看应该有吧;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值