工作学习报告--java基础(1)

java 

StringBuilder类  

int length()  求构建器中的代码单元的数量

StringBuilder append(String str) 追加一个字符串并返回this

StringBuilder insert(int offset,String str)  在offset 位置插入一个字符串并返回this

StringBuilder delete(int startIndex, int endIndex) 删除偏移量从startIndex 到--endIndex-1 的代码单元并返回this

String toString()  返回一个与构建器或缓冲期内容相同的字符串


Scanner 类

Scanner in= new Scanner(System.in);
System.out.printf("yuyi,test\n");
String name=in.nextLine();
System.out.printf("%s", name);


nextline()  取出的是一行

next()  取出的是一个单词


Scanner类的输入是可见的,所以Scanner 类不适用 控制台读取密码。。。

Console类

Console cons=System.console();
String username =cons.readLine("username");
char[] passwd=cons.readPassword("输入密码:");

System.out.printf("%s,%s",username,passwd);


这个要在控制台里运行,不要在ide里运行。


要对文件进行读取,则要构建一个scanner对象

Scanner in = new Scanner(Path.get("文件名"));//要先拿到路径对象。

想要写文件:

PrintWriter out= new PrintWriter("只要写文件名")

如果在ide环境里可以使用 String dir= System.getProperty("user.dir")  用来找到路径位置。

如果不想这样,那就用绝对路径。


label:{ for(){。。。;break label}。。。 }  // 则跳出最外层label循环。


java中允许长度为零的数组。。。长度为零的数组又不同于null。。。

数组结果为空,则刚好可以接收结果集。申明: new element [0]


数组的copy 将同时引用同一片空间。

数组里的fill 函数:static void fill(type[] a, type v)//将数组的所有数据元素值设置为v


多维数组的遍历:

for(int [] row :a)

 for(int val:row)

   do sth;


this  : 将实例域与局部变量区分开来,因为调用本类的方法时候,默认会把类名作为隐形参数传过来。用this 就可以调用。


书写规范: 类名大写;

参数方法,参数 第二个大写

内部局部变量小写


返回堆上数据的访问器用clone 方法;


类内变量设置为private 但是方法设置为 public


final类对象一旦被构建,没构建还是可以第一次构建的,将不允许被修改。


类里的静态变量(比如线程池里的计数器),是所有生成的对象里都共同访问的同一个变量空间。


?????本地方法,比如system里的setOut 方法 它可以改变final 变量的值。 它不是java语言实现的,本地方法可以绕过java 语言存取控制机制?????


java对象引用(类)的传递进行的是值传递。(把引用当成值传递)


编译器对文件(带有文件分隔符和扩展名.java的文件)进行操作。 而java 解释器加载类(带有.分隔符)

编译器在编译源文件的时候不检查目录结构,即使目录下也可以进行编译。如果不依赖于其他包就不会出错,但是无法运行,因为虚拟机找不到类文件  。


this 有两个用途:1、引用隐式参数 2、调用该方法的其他的构造器  (this可以表示对象)

super 的两个用途  :1、调用超类的方法  2、调用超类的构造器(super不是一个对象的引用,不能将super赋给另一个对象变量)


多态:就是”is a “ 规则,它表明子类的每个对象也是超类的对象。

不能将超类的引用赋给子类的变量。


动态绑定(方法重载)--》方法名---》参数类型---》private ,static ,final 方法(静态绑定)---》在方法列表里查找然后选择最合适的方法(从子类到超类层级查找)运行,super关键字将直接查找超类。


将类中的域标记为private 而 方法标记为public


编写一个equals 方法完整流程

1、判断 this==otherObject

2、检测otherObject 是否为null

3、检测 getClass() 是否等于 otherObject.getClass()

4、otherObject instanceof ClassName

5、强制类型转换 能否成功 ClassName other = (ClassName)otheObject

6、对所有的域比较;使用==比较基本类型域   用equals 比较对象域, 如果所有域都匹配就返回true


对于数组类型的域,可以用静态的Arrays.equals 方法检测相应的数组元素是否相等。


hashCode() 返回对象的散列码,散列码为任意的整数,包括正数或负数。两个相等的对象要求返回相等的散列码。


强烈建议为自定义的每一个类增加一个toString()方法。


ArrayList 类型 用size()方法得到 链表长度。

ArrayList<Employee> staff = new ArrayList<Employee>(1000);

staff.size();

访问和改变值: set 和get          如 staff.set(i,harry);     staff.get(i); 


Integer n=3 ; n++;//这个先拆箱在装箱;

int x=Integer.praseInt(n);


Employee e;

Class cl=e.getClass();  返回一个Class类型的实例;


反射:

static Class forName(String className)//返回描述类名为className 的Class 对象

Object newInstance() // 返回这个类的一个新实例。


出错时候在catch 里 用 print e.printStackTrace();

Field[] getDeclaredFields() 将返回包含Field 对象的数组,这些对象记录了这个类的全部域

Method[] getDeclareMethods() 返回这个类或者接口的全部方法,但不包含由超类继承了的方法。

Constructor[] getDeclaredCOnstructors()  返回该类所有的构造器


boolean isAccessible()  //返回反射对象的可访问标志的值

field.setAccessible(true) // 表示可以设置访问级别为可访问

field.get(object) //表示拿到object对象的field 内容。


一个对象数组不能转换成雇员数组(Employee[]) ,将一个Employee[] 临时的转为Object[] 数组,然后把它转回来是可以的,但是一开始是Object类型却永远没法转为Employee [] 类型。需要能够创建与原来数组类型相同的新数组。


method.invoke(参数变量)   // 静态方法 用的是:method.invoke(null,参数变量)  ;

但是invoke 的参数和返回值必须是object 类型。这就意味着必须经过多次类型转换


接口中的方法默认的被设置成public,域也被直接设置为public static final


默认的克隆操作室浅拷贝,他并没有克隆包含在对象中的内部对象。

即使clone 的默认实现(浅拷贝)能够满足要求,也应该实现Cloneable 接口,将clone重新定义为public 并调用super.clone()


想要定义一个回调函数又不想写大量代码的,使用匿名内部类会比较便捷。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值