• 2018.8.3 Java中容易犯错误的问题思考与总结


    Java容易犯错误的问题思考

    float型 float f = 3.4 是否正确

    	不正确,应该用强制类型转换。如下所示:float f = (float)3.4  或float f = 3.4f 在java里面,没小数点的默认是int 有小数点是double;
    	编译器是自动向上转型,如int 转成 long 系统自动转换没有问题,因为后者精度更高 double 转成 float 就不能自动做了,所以后面的加上个 f;
    

    java中有4中访问修饰符;

    (1)private(2)public(3) protected(4) friendly.
    具体解释:
    	(1)private :被private修饰的变量和方法,只能在本类中使用。在其他的类中访问不到。在java中实体类中的变量被定义为pivate,外界使用的时候,可以使用get,set方法操作。
    
    	(2)public:被public修饰后,可以被任何类访问,不管这个类是否在同一个包中。
    
    	(3)protected:只能在本类,同一个包中被访问,如果不在同一个包中,必须是该成员所属的子类。否则无法访问。
    
    	(4)friendly:是能在同一个类中或者同一个包中被访问。
    

    运算符优先级:从左到右

    
    [ ]    ( )     ++      --        !       ~      instanceof      *       /       %       +        -        <<       >>          >>>        <      >       < =      > =       ==      !=      &     ^       &&      ||        ? :           op=
    

    switch语句后的表达式的值是哪些类型?

    一般格式:
    switch (表达式)
    {
    case 常量标号1:语句序列1;
    break;
    case 常量标号2:语句序列2; 
    break;
    …
    case 常量标号n:语句序列n;
    break;
    default: 语句S;
    }
    
    不一定要是int类型,只要是隐式转化为int类型也是可以的String也可以的哦
    
    其中:
    ①表达式:可以控制程序的执行过程,表达式的结果必须是整数、字符或枚举量值。
    ②case后面的常量标号,其类型应与表达式的数据类型相同。表示根据表达式计算的结果,可能在case的标号中找到,标号不允许重复,具有唯一性,所以,只能选中一个case标号。尽管标号的顺序可以任意的,但从可读性角度而言,标号应按顺序排列。
    ③语句序列是switch语句的执行部分。针对不同的case标号,语句序列的执行内容是不同的,每个语句序列允许有一条语句或多条语句组成,但是case中的多条语句不需要按照复合语句的方式处理(用{}将语句括起来),若某一语句序列i为空,则对应的break语句可以省略(去掉)。 
    ④break是中断跳转语句,表示在完成相应的case标号规定的操作之后,不继续执行switch语句的剩余部分而直接跳出switch语句之外,继而执行switch结构后面的第一条语句,如果不在switch结构的case中使用break语句。程序就会接着执行下面的语句。
    ⑤default用于处理所有switch结构的非法操作。当表达式的值与任何一个case都不匹配时,则执行default语句。
    

    Java 日期相关Date、SimpleDateFormat、Calendar区分和使用

    	(1)Date类
    		类Date表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00  的毫秒数(long) 类型来表示一个特定的时间点,使用Calendar来替代
    		常用的方法:long getTime()      void setTime(long time)
    	
    例子:		
    	public class T01Date {
    	public static void main(String[] args) {
    		//getTime():返回的时间是距离1970年的毫秒数.值不受setTime()的影响
    		//date值受setTime()的影响
    		Date date=new Date();
    		long current=date.getTime();
    		System.out.println(current);
    		System.out.println(date);
    		long time=current+1000*60*60*24;//时间设置为明日此时
    		date.setTime(time);
    		System.out.println(date.getTime());
    		System.out.println(current);
    		System.out.println(date);//	Thu Aug 02 23:34:39 CST 2018
    	}
    }
    
    	
    	(2)SimpleDateFormat 根据特定的日期格式在Date和字符串指甲能转换
    		常用方法:String format(Date date):将日期按照制定的格式转换成字符串
    		Date parse(String str):将字符串按照转指定格式转换成Date  可以用来指定格式的字符
    	
    例子:	
    	/**
    	 * java.text.SimpleDateFormat
    	 * 该类可以根据一个指定的日期格式将Date于String
    	 * 之间相互转换
    	 * @author qichunlin
    	 *
    	 */
    	public class T02SimpleDateFormat {
    		public static void main(String[] args) throws ParseException {
    			Date now =new Date();
    			//yyyy-MM-dd hh:ss:mm
    			SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh时ss分mm秒");
    			String str = sdf.format(now);
    			System.out.println(str);
    				
    			//a 居然能区分上下午汉字
    			String strDate="2018年8月02日下午12点20分30秒";
    			SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日ahh点ss分mm秒");
    			Date date=sdf2.parse(strDate);
    			System.out.println(date);
    				
    			}
    		}
    
    	
    	(3)Calendar java.util.Calendar 是抽象类,主要用来对时间分量进行计算
    		常用方法:Date和Calendar之间的转换
    				//默认创建出来的Calendar的实现类表示当前系统时间
    				Calendar c=Calendar.getInstance();
    				//将Calendar转换为Date
    				Date date=c.getTime();
    				
    				//Date->Calendar
    				/*
    				 * void setTime(Date date)
    				 * 该方法可以使当前Calendar表示给定的
    				 * Date所表示的时间
    				 * */
    				c.setTime(date);
    			}
    		}
    		
    
    		getInstance() Calendar是抽象类,其提供了一个工厂方法:Calendar  getInstance()  用来获取Calendar类型的实例
    
    
    
    综合起来常用的
    	
    	public void test01() throws ParseException{
    		//要求用户输入一个日期,计算后,指定格式输出日期
    		/*String--SimpleDateFormat()-->Date
    		Date-->Calendar
    		使用Calendar进行相应计算
    		Calendar-->Date
    		Date--SimpleDateFormat-->String
    		*/
    		String input="2018-03-26";
    		
    		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    		Date date=sdf.parse(input);
    		Calendar c=Calendar.getInstance();
    		//set(),与add()
    		c.setTime(date);
    		c.add(Calendar.YEAR,1);
    		c.set(Calendar.MONTH,0);
    		c.set(Calendar.DAY_OF_WEEK,1);
    		
    		date=c.getTime();
    		SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd分hh时ss分mm秒");
    		String strTime=sdf2.format(date);
    		System.out.println(strTime);
    	}
    
    
  • 相关阅读:
    Hive扩展功能(四)--HiveServer2服务
    Hive扩展功能(三)--使用UDF函数将Hive中的数据插入MySQL中
    Hive扩展功能(二)--HWI接口
    Hive扩展功能(一)--Parquet
    Flutter全局变量设置 (ScopedModel)
    PHP时间常用方法
    用iFrame Resizer解决iframe高度自适应问题
    aos.js超赞页面滚动元素动画jQuery动画库
    Jcrop最新手册
    jQuery Jcrop API参数说明(中文版)
  • 原文地址:https://www.cnblogs.com/qichunlin/p/9410978.html
Copyright © 2020-2023  润新知