A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李竞一ljy 初级黑马   /  2019-8-27 15:45  /  835 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在写编码的时候遇到一些出现问题的地方,做了些笔记,和朋友们分享一下,希望对你有用
1:
String  int  Integer相互转型
Integer.valueOf(String s)    将字符串转换为Integer对象

in.inValue()     返回Integer的int值

Integer.parseInt(String s)   将字符串转换为十进制整数

Integer.toString(int t)     返回指定整数的  String   对象  

in.toString()   返回一个表示Integer的值String对象

String.valueOf(S s)   返回指定整数的string对象

2:日期格式
SimpleDateFormat
是一个具体的类,用于以区域设置铭感的方式格式化和解析日期
日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从Z-A  z-a被解释为表示日期或时间字符串的组件的模式字母
常用模式字母对应关系如下:(注意区分大小写)
y   年      year
M   月    month
d   日     day
H    时     hour
m   分     minute
s    秒      second
3:TCP发送端理解

//创建客户端的socker对象(Socker)

//可以理解为一个想发送信息的客户A

//向工作人员提供,接受人,和接受验证码

Socket s=new Socket("192.168.12.57",10000);

//获得输出流,写数据

//可以理解为是一个帮助用户发送信息的工作人员

//帮助客户书写发送客户要传达的信息

OutputStream os = s.getOutputStream();

os.write("hello,tcp,我来了".getBytes());

//接收服务器反馈

//可以理解为是一个帮助客户联系接受人的工作人员

//帮助客户确认对方是否已经联系成功,并且接受对方的来信,

InputStream is = s.getInputStream();

//创建数组空间,用来储存对方来信信息

byte[] bys=new byte[1024];

//读取来信,并且将读取数据存进数组容器

//返回读取信息字节数

int len=is.read(bys);

//将存储读取信息的数组转化为字符串

String data=new String(bys,0,len);

//将接受的来信输出到控制台

System.out.println("客户端:"+data);

//释放资源

s.close();

4:打印时间:

Calendar  cal= Calendar.getInstance();

System.out.println(cal.getTime())

5:异常try{

    int[] arr=null;

    System.out.println(arr[2]);

}catch(NullPointerException e){      //异常对象声明正确

    System.out.println(e);

}

try{

    int[] arr=null;

    System.out.println(arr[2]);

}catch(ArrayIndexOutOfBoundsException e){    //异常对象声明错误

    System.out.println(e);

}

在try语句中如果异常对象声明错误,catch中的逻辑判断语句将不会执行,虚拟机直接报错.终止执行

6:流读取错误

//第一次读取数据

int by = fis.read();

System.out.println(by);

System.out.println((char) by);

fis.close();                  //注意此处已经将资源关闭,IO口关闭,所以再读取数据会报错

//第二次读取数据

by = fis.read();

System.out.println(by);

System.out.println((char) by);

fis.close();

运行错误:

Exception in thread "main" java.io.IOException: Stream Closed  (字节流已经关闭)

7:子类成员变量的访问
如果子类没有重写方法get(),那么进关在子类中定义了成员变量,返回的还是父类的成员变量.

8:子类初始化

在子类定义新的对象时,会先系统默认的执行父类的无参构造方法,-----父类的无参构造方法有先与子类的构造方法.

如果字类中没有无参构造方法,并且已经定义了子类的构造方法,所以此时系统不再会提供无参默认方法,而这时要想创建子类对象那个,调用父类的无参构造,可以通过调用一个有参数的.

(因为子类是对父类的继承,有些信息是从父类继承而来,在子类中并没有重新定义,而这些信息又是子类所需的,所以需要通过调用父类构造方法,初始化父类信息,以便被子类所应用.)

this.():本类中调用构造方法,需要首行被注释.9:字节流的read方法
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("E:\\itcast\\java.txt"));

/*int len;

while((len=bis.read())!=-1){   //read()方法读取字节流,并返回所读取的字节数据(字符对应的字节码)

    System.out.println((char)len);            //将字节码转换为char字符类型,并输出

}*/

byte[]  bys=new byte[1024];

int len1;

while((len1=bis.read(bys))!=-1){            //read(数组)将读取的数据储存如数组,并返回读取数据个数

    System.out.println(new String(bys,0,len1));       //

    System.out.println(len1);

}

bis.close();

理解补充:

read(数组)将读取的数据储存如数组,并返回实际读取字节数目

该方法先读取一定的数量的字节,储存于数组中,之后再一起输出

单词读取的字节数量,取决于数组的大小,若可以一次存入所有的要读取的数据,那么输出一次即可

如果不能一次性读取完,那么就要循环读取,一次读取的字节数量和数组的长度相同,直至读取完为止.

10:静态变量的储存
在类中,被static修饰的成员变量是所有该类的是对象共同拥有的属性,在内存区,存储在静态存储区,通过类进行调用,虚拟机分辨出,该成员变量是静态的,就去静态存储区取静态变量,通过类名进行识别。

静态方法只能访问静态成员

11:多态的体现
Animal a=new Cat();

a.eat();

a=Dog();

a.eat();

同一段代码在不同时刻表现出的不同状态/功能

上面的代码中指的是:   a.eat();

12:多态转型
在继承多态父类向子类转型过程中,父类只能转成父类当前指向的子类,

例如:如果现在父类对象指向狗,而你想将这个父类对象转成猫,会出现运行错误(编译不报错)

13:内存垃圾
Cat a = new Cat();     //第一行

//Animal a = new Cat();    //第二行

Animal aa=a;

a.setName("小花");

a.setAge(2);

System.out.println(a.getName() + "," + a.getAge() + "岁");

aa= new Cat("小黑", 1);

System.out.println(a.getName() + "," + a.getAge() + "岁");

a.eat();

如果没有第一行代码,直接用第二行代码中的变量a直接进行重新的创建对象,就会出现堆内存垃圾,

会因为占用内存,影响运行速度.

14:抽象方法的构造
抽象类也有构造方法,虽然不能单独的实例化,但是在它的实现子类构造对象时,需要访问父类的构造方法进行初始化.

15.多重继承的重写
在抽象类A中定义抽象方法showA,在抽象类B中定义方法showB,B继承C,实现类在C类继承B,如果在B类中没有重写A类中的抽象方法,在C中会一起重写

16:字符流和字节流的read方法
在输入流中的read方法(字节和字符的read()方法都是如此,不同的是当利用缓冲数组时,字节流用byte数组为参数,字符流用char数组做参数)

17:
File file=new File("E:\\itcast");

File[] listFiles = file.listFiles();

System.out.println(Arrays.toString(listFiles));

运行结果:

[E:\itcast\Conversion.java, E:\itcast\Conversion0.java, E:\itcast\java.txt, E:\itcast\java1.txt, E:\itcast\java2.txt, E:\itcast\java4.txt, E:\itcast\javaCopy.txt, E:\itcast\javase.txt, E:\itcast\ndmz,jpg, E:\itcast\ndmz.jpg, E:\itcast\ndmz1.jpg, E:\itcast\ndmz2,jpg, E:\itcast\ndmz3.jpg, E:\itcast\ndmz4.jpg, E:\itcast\Student.txt, E:\itcast\单词]18:
String类中的equals方法是用来判断两个对象的内容是否相同,而Object 类中的equals方法是用来判断两个对象是否是同一个对象,所谓同一个对象指的是内存中的同一块存储空间,toString方法的好处是在碰到println方法的时候会被自动调用,不用显示的写出来。

19:
内部类可以访问外部类的成员,包括私有成员,但是这只限于在内部类内部,内部类的实现对象不能直接访问外部类的成员.

20:关于toString方法,如果父类重写了该方法,子类调用时有相同的作用,可以返回对象信息,如果子类将父类的成员变量重新定义,不会影响该方法输出子类的信息.

21:
convert05("123",(String s2)->{

    return Integer.parseInt(s2);},(Integer in)->{

        return String.valueOf(in+123);

});

最好是用省略格式,因为完整格式有许多标点符号,容易落下.例如return后面的分号,和大括号

22:
listStream.skip(2).filter(s->s.length()>2).limit(3).forEach(System.out::println);

//listStream.skip(2).filter(s->s.length()>2).limit(3).forEach(s->System.out.println(s));

重点;

这两句语句的效果相同,在这可以体现出引用符的好处,不用写重写方法的参数

23:String方法
startsWith():    是否是括号内的内容开始的

endsWith()  ;   是否是括号内的内容结尾的

:substring(int a,int b)    取出一个字符串的子字符串(a~b);不包含序号为b的字符

substring(int a)     取出一个子字符串,从索引为a的字符开始,到字符串尾部.

contains("  ")  ;     判断字符串中是否包含括号内的字符

indexOf(int a)    ;   返回指定子字符串第一次出现的字符串内的索引。

24:
在遇到遍历数组,或遍历集合时,如果有删除元素的语句,注意删除元素的同时集合和数组的大小会改变,可能影响到遍历,所以,可以将删除元素的语句单独拿出,进行删除

方法1:

for(int i=0;i<arr2.size();i++){

    Emoly e=arr2.get(i);

    if(e.getName().equals("王五")){

  •         e.setName("王小五");

    }

    if(e.getName().equals("田七")){

        e.setManey(e.getManey()+500);

    }

}

for(int i=0;i<arr2.size();i++){

    Emoly e=arr2.get(i);

    if(e.getName().equals("赵六")){

        arr2.remove(e);

    }

}

方法2:

for(int i=0;i<arr2.size();i++){

    Emoly e=arr2.get(i);

    if(e.getName().equals("王五")){

        e.setName("王小五");

    }

    if(e.getName().equals("赵六")){

        arr2.remove(i--);     //删除索引为  i  的元素,然后将索引进行自减(将删除的元素索引取出)

    }

    if(e.getName().equals("田七")){

        e.setManey(e.getManey()+500);

    }

}25:

网络编程,TCP先启动服务器端等待接收连接请求,再启动客户端返送连接请求,之后服务器接收信息,同意连接,开始信息传送






0 个回复

您需要登录后才可以回帖 登录 | 加入黑马