java(1)--小知识点总结

short  a =4;

a=a+5;   //会报错  ,因为进行了一次加法运算又进行了一次赋值运算。

a+=5;  //不会报错,因为只进行了一次运算,而且这个运算会强制类型转换。

 

环境变量配置 技巧  我们可以设置一个classpath变量  这样java在寻找类的时候会首先考虑classpath地址里的。 可以在path里加入 %classpath%变量。

 

 

&和&&的区别 

Int  a=2;

a>3& a<4  首先会计算a>3  结果为false   然后又计算a<4   会把两边都计算一下

a>3&& a<4    首先会计算a>3   如果结果为false的话  就不用计算a<4

 

|和||的区别

| 两边都参与运算

||  当左边为true时,右边不用运算

由此可知   &&和|| 会比&和|的效率高一些


while循环和for循环的使用  从效率和内存上来讲更多使用for循环 因为当for循环使用结束时 ,int变量会自动销毁


无限循环的最简单表达式 

for( ; ;) { }


break 跳出循环 

w:for(Int x=0; x<3; x++)   //为此循环标上名字

{

q:for(int y=0;y<x;y++)

{

system.out.println("x="+x);

break  w ;    //跳出w循环  

}

}


break和continue必须作用在循环之内才能有用


内存概念  栈内存和堆内存  

Int []  x  = new int[ 3 ];

x 存储于栈内存内    栈内存也存放main函数和其他函数  其他函数使用完后退出内存 

而堆内存存放new后的对象  对象用地址标示  上述表达式的 x的内容就是new对象之后的地址 0x000...


排序

Array.sort( arr );


折半查找提高了效率,但是必须要保证是有序的


进制转换最优算法

class ArrayTest7 
{
public static void main(String[] args) 
{
//toBin(-6);
//toHex(-60);
//toBa(60);


// System.out.println(Integer.toBinaryString(6));
// System.out.println(Integer.toHexString(6));
}

/*
十进制-->二进制
*/
public static void toBin(int num)
{
trans(num,1,1);
}
/*
十进制-->八进制
*/
public static void toBa(int num)
{
trans(num,7,3);
}
/*
十进制-->十六进制
*/
public static void toHex(int num)
{
trans(num,15,4);
}

public static void trans(int num,int base,int offset)
{


if(num==0)
{
System.out.println(0);
return ;
}
char[] chs = {'0','1','2','3'
,'4','5','6','7'
,'8','9','A','B'
,'C','D','E','F'};
char[] arr = new char[32];
int pos = arr.length;
while(num!=0)
{
int temp = num & base;
arr[--pos] = chs[temp];
num = num >>> offset;
}

for(int x=pos; x<arr.length; x++)
{
System.out.print(arr[x]);
}
return ;
}
}


arr[3][]

arr.length    二维数组的长度 即行数

arr[0] .length   二维数组中第一个一位数组的长度


私有仅仅是封装的一种表现形式


构造函数的几个特点:

1. 函数名与类名相同

2.不用定义返回值类型

3.不可以写return语句

当对象一建立,就会调用与之对应的构造函数


当一个类没有定义构造函数时,那么系统会默认给该函数定义一个空的构造函数


什么时候定义构造函数呢

当分析事物时,该事物存在具备一些特性或行为,那么将这些内容定义在构造函数中


构造代码块  //没有函数名   只有函数体的代码块

作用:给对象进行初始化

对象一建立就运行,而且优先于构造函数执行

和构造函数的区别

构造代码块是给所有对象进行统一初始化    里面是对象的共性内容         而构造函数是给对应的对象进行初始化


this所代表的对象:哪个对象调用this所在的函数  this就代表哪个对象


static   静态修饰的内容可以被对象所共享,  省去了堆内存里的内容,节约内存

static特点:

随着类的加载而加载   随着类的消失而消失   也就是说它的声明周期最长

被所有对象所共享

优先于对象所存在

可以直接被类名所调用


重载和重写

重载:只看同名函数的参数。

重写:子父类方法要一模一样,包括返回值类型。


父类和子类的属性可以一样,new一个之类对象,访问子类同名属性时用this,访问父类同名函数时用super、


在对子类初始化的时候,父类的构造函数也会进行,因为子类的构造函数里默认第一行有一条隐式的语句super();

super()会访问父类中的空参数的构造函数,而且子类中所有的构造函数第一行都有一条隐式的super():


为什么子类一定要访问父类中的构造函数。

因为父类中的数据子类可以直接获取。所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。
所以子类在对象初始化时,要先访问一下父类中的构造函数。
如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。


注意:super语句一定定义在子类构造函数的第一行。


类的修饰符 public final

成员的修饰符  public private potential


抽象类的特点:
1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。因为调用抽象方法没意义。
4,抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。


在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考做左边。


throw 和 throws的区别

throw为手动抛出异常   throws为声明使用异常

throws和throw的区别
throws使用在函数上。
throw使用在函数内。
throws后面跟的异常类。可以跟多个。用逗号隔开。
throw后跟的是异常对象。


Exception异常中的RuntimeException     在函数中抛出异常 可以不用在函数上声明

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值