数据类型

1、double保留两位数字

double f=30.3336;

DecimalFormat df = new DecimalFormat("#.00"); 

System.out.println(df.format(f));

2、System.out.println("3>1="+(3>1));     // 3>1=true;

3、任何类型的数据都向String转型;

4、a++,++a的区别

int a=3;
int b=1;
int y=5;
System.out.println(y+(a++)); //8
System.out.println(y+(++b)); //7
a++ 先执行整个语句后再将a的值加1 ;++b 先把b的值加1后再执行整个语句。

5、&&(短路与)和&的区别以及||(短路或)和|的区别

&&时判断第一个条件为false,后面的条件不再进行判断。
&时要对所有的条件进行判断。

||判断第一个条件为true,后面的条件就没有进行判断就执行了括号中的代码,而|要对所有的条件进行判断,

所以会报错。

6、

a+=b ,将a+b的值存放到a中,相当于a=a+b;

 

7、

int a=1;
int b=2;
a*=b++;
System.out.println(a);//a=2
System.out.println(b);//b=3

 

a*=b++,a*b的值存放到a中后b再加1;

8、三目运算符

 

int x=10;
int y=4;
System.out.println(x>y?x:y);  // 10

三目运算符相当于if...else语句,条件判断为真,则结果为:前的表达式否则结果为:后的表达式

9、if是条件判断,如果满足条件就会进入相应的条件分支,可以进入多个if分支;

10、当程序执行到break语句时,即会离开循环,继续执行循环外的下一个语句,如果break语句出现在嵌套循环的内层,则break语句只会跳出当前层的循环。

11、数组存放的是类型完全相同的数据。

12、基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量,其内存分配在栈上,变量出了作用域就会自动释放。堆内存用来存放由 new 创建的对象和数组。

13、int score[ ][ ]=new int[3][4];配置一块内存空间,供3行4列的整形数组score使用,可保存的元素有4*3=12个;

14、单位换算

一个二进制数据0或1,是1bit;

 * 1 bit = 1 二进制数据
  * 1 byte(字节) = 8 bit(位)
  * 1 字母 = 1 byte = 8 bit(位)
  * 1 汉字 = 2 byte = 16 bit

1个汉字字符存储需要2个字节,1个英文字符存储需要1个字节。
ASCII是一个字节,Unicode是两个字节。
Java的字符是Unicode的,所以是两个字节;
 KB是千字节,MB为兆字节,GB为吉字节,换算关系为:
1Byte(通常简写为B)=8bit
1KByte=1024Byte
1MByte=1024KByte
1GByte=1024MByte

15、System.out.print( )可以打印出不同类型的数据,也就是说println()方法被重载了;

16、方法重载的要求就是两同一不同:同一类中方法名相同,参数列表不同。

至于方法的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系。

17、return有一个特性就是一旦调用return 那么直接结束方法.

18、递归调用,就是一个方法自己调用自己。在使用递归调用的时候,应该声明一个操作的终结点。但是采用递归调用的时候会增加内存负担,因为每调用一次方法都要新开辟一段栈空间,直到该方法调用结束才释放。通常意义上递归会有结束条件。所谓结束条件就是告诉程序以及到达本次递归的最底层了,不必继续运行的条件。递归至少要包括一个结束条件,而且要确保程序能最终能到达某一个结束条件。不然的话,你的递归程序会因栈空间不足而中止。示例:

  public static void main(String[] args) {
  System.out.println("计算结果:"+sum(100));
    }
  public static int sum(int num) {
  if(num==1){
  return 1;}

   else{

  return num+sum(num-1);

  }}

19、For-Each循环的缺点:丢掉了索引信息。当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。

 20、SimpleDateFormat 是一个各种项目中使用频度都很高的类,主要用于时间解析与格式化,频繁使用的主要方法有parse和format.

parse方法:将字符串类型(java.lang.String)解析为日期类型(java.util.Date)
format方法:将日期类型(Date)数据格式化为字符串(String)
21、 Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor
22、spring给map和properties注入,<props>和<map>的使用方法相似,区别在于<props>的值只能是String类型,所有没有必要使用<value>元素来区分String型数值和非String型数值;
  1. <property name="empMaps">  
  2.     <map>  
  3.         <entry key="11" value-ref="emp1" />   
  4.         <entry key="22" value-ref="emp2"/>  
  5.         <entry key="22" value-ref="emp1"/>  
  6.     </map>  
  7. </property>  
  8.   
  9. <!-- 给属性集合配置 -->  
  10. <property name="pp">  
  11.     <props>  
  12.         <prop key="pp1">abcd</prop>  
  13.         <prop key="pp2">hello</prop>  
  14.     </props>  
  15. </property>  
23、spring实例化bean的过程。
实例化bean测试结果:先构造函数——>然后是b的set方法注入—— >InitializingBean 的afterPropertiesSet方法——>init- method方法
24、static声能的属性是所有对象共享的,只要修改一个对对象的static属性则全部对象的相应属性都会发生改变;
25、
在Java中主要存在4块内存空间:
(1)栈内存空间:保存所有 的对象名称(确切地说是保存了所引用的堆内存空间的内存地址)
(2)堆内存空间:保存每个对象的具体属性内容
(3)全局数据区:保存static类型的属性
(4.)全局代码区:保存所有的方法定义
26、为什么static声明的方法不能调用非static方法和属性?
静态方法在没有创建实例时就可以使用,而非静态方法一定要创建实例才会存在,所以在静态方法中调用非静态方法是不允许的,因为非静态方法在未实例化时是不存在的。
27、通过static属性统计一个类产生了多少个实例;

public class Demo {
private static int count=0;
public Demo(){
count++;
System.out.println("产生了"+count+"个对象");
}
public static void main(String[] args) {
// TODO Auto-generated method stub

Demo demo1=new Demo();
Demo demo2=new Demo();
Demo demo3=new Demo();
}

}

28、使用static为对象进行自动的编名操作。

public class Demo {
private static int count=0;
private String name;
public Demo(){
count++;
this.name="Demo_"+count;
}
public String getName() {
return name;
}
public Demo(String name) {
this.name = name;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Demo().getName());  //Demo_1
System.out.println(new Demo("LH").getName()); //LH
System.out.println(new Demo().getName());  //Demo_2
System.out.println(new Demo("LiLy").getName());  //LiLy
System.out.println(new Demo().getName());  //Demo_3
}
}

 28、this和super都可以调用构造方法,但二者是不可以同时出现的;无论子类如何操作,最终首先要必须调用父类中的构造方法;

29、final关键字

(1)使用final声明的类不能有子类

(2)使用final声明的方法不能被子类重写

(3)使用final声明的变量即成为常量,常量不可以修改,要求全部的字母大写;

30、==永远是用来比较内存中的地址的;

31、==和equals的比较

 

  1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

 

    如果作用于引用类型的变量,则比较的是所指向的对象的地址

 

  2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量

 

    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

 

    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

32、 基本类型值:指的是保存在栈内存中的简单数据段;引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针指向内存堆中实际的值;

33、当传递方法参数类型为基本数据类型(数字以及布尔值)时,一个方法是不可能修改一个基本数据类型的参数。

  当传递方法参数类型为引用数据类型时,一个方法将修改一个引用数据类型的参数所指向对象的值。

34、虽然接口不能继承一个类,但是依然是Object类的子类,因为接口本身是引用数据类型。

35、所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类。

36、装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

37、在java程序设计时应充分地利用异常处理机制,以增进程序的稳定性及效率;

38、通过异常处理,即使程序出现异常之后也可以正确执行;

39、e.printStackTrace();最完整的异常信息打印方式;

40、Exception(checked和unchecked)

RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的RuntimeException 的任何子类都无需在 throws 子句中进行声明。它是Exception的子类。

checked异常:

  • 表示无效,不是程序中可以预测的。比如无效的用户输入,文件不存在,网络或者数据库链接错误。这些都是外在的原因,都不是程序内部可以控制的。
  • 必须在代码中显式地处理。比如try-catch块处理,或者给所在的方法加上throws说明,将异常抛到调用栈的上一层。
  • 继承自java.lang.Exception(java.lang.RuntimeException除外)。

unchecked异常:

  • 表示错误,程序的逻辑错误。是RuntimeException的子类,比如IllegalArgumentException, NullPointerException和IllegalStateException。
  • 不需要在代码中显式地捕获unchecked异常做处理。
  • 继承自java.lang.RuntimeException(而java.lang.RuntimeException继承自java.lang.Exception)。

41、不要在主方法处使用throws关键字,如果在主方法中使用throws,则程序出现问题后将交由JVM处理,将导致程序中断;

42、finally作为异常的统一出口,在此块语句中尽量不要出现throw或return这样的语句,这样可以避免不必要的问题出现;

43、静态导入:import static com…..ClassName.*;这里的多了个static,还有就是类名ClassName后面多了个 .* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名的方式来调用。 

44、java命名规范

1、 项目名全部小写

2、 包名全部小写

3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。

如:public class MyFirstClass{}

4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。

如:int index=0;

       public void toString(){}

5、 常量名全部大写

如:public static final String GAME_COLOR=”RED”;

6、所有命名规则必须遵循以下规则:

1)、名称只能由字母、数字、下划线、$符号组成

2)、不能以数字开头

3)、名称不能使用JAVA中的关键字。

4)、坚决不允许出现中文及拼音命名。

 

posted @ 2017-09-23 09:21  爱珍  阅读(169)  评论(0)    收藏  举报