JAVA基础

     回顾java知识做了以下总结,如果有什么问题,希望能指出来一起学习(未更新完,后期补)

一、Java的简单介绍

Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。

Java分为三个体系:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。
  1. 主要特征:简单易学、纯面向对象程序设计语言(提供类、接口和继承等面向对象特征)、支持Internet应用(提供了用于网络应用编程的类库)、安全防范机制(类ClassLoader)、可移植、支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)
  2. Java开发工具:系统(Linux 系统、Mac OS 系统、Windows 95/98/2000/XP,WIN 7/8系统)。软件(IDEA、Eclipse

二、Java基础

  1. Java编程Hello World!
    public class Hello {
            public static void main(String[] args) {
                System.out.println("Hello World!");
            }
        }
  2. Java数据类型
    基本数据类型:byte、short、int、long整数)、float、double(浮点数)、char(字符)、boolean(布尔
    引用数据类型:String、接口、数组、类

    注:取值范围大的数据类型向取值范围小的转换,可能会引起数据溢出,精度丢失。
    public class Hello {
        public static void main(String[] args) {
            //1、类型的定义
            //内置数据类型:byte、short、int、long(整数)、float、double(浮点数)、char(字符)、boolean(布尔)
      
            //数值型:整型、浮点型
            //整型:byte、short、int、long
            // int  包装类:java.lang.Integer
            int i = 1;
            System.out.println("int 二进制位数:" + Integer.SIZE);  //int 二进制位数:32
            System.out.println("最小值:" + Integer.MIN_VALUE);  //最小值:-2147483648
            System.out.println("最大值:" + Integer.MAX_VALUE);  //最大值:2147483647
    
            // long  包装类:java.lang.Long
            long l = 100000L;
            System.out.println("long 二进制位数:" + Long.SIZE); //long 二进制位数:64
            System.out.println("最小值:" + Long.MIN_VALUE);  //最小值:-9223372036854775808
            System.out.println("最大值:" + Long.MAX_VALUE);  //最大值:9223372036854775807
    
            // byte  包装类:java.lang.Byte
            byte b = 10;
            System.out.println("byte 二进制位数:" + Byte.SIZE);  //byte 二进制位数:8
            System.out.println("最小值:" + Byte.MIN_VALUE);  //最小值:-128
            System.out.println("最大值:" + Byte.MAX_VALUE);  //最大值:127
    
            // short 包装类:java.lang.Short
            short s = 1000;
            System.out.println("short 二进制位数:" + Short.SIZE);   //short 二进制位数:16
            System.out.println("最小值:" + Short.MIN_VALUE);  //最小值:-32768
            System.out.println("最大值:" + Short.MAX_VALUE);  //最大值:32767
     
            //数据溢出问题
            int number=Integer.MAX_VALUE;
            long rs=number+1;
            System.out.println(rs);//-2147483648
            /**
            *程序执行顺序由等号的右边到左边,如果像以上计算结果就会出现数据溢出
            *解决数据溢出的方式
            *1、long rs=(long)number+1;
            *2、long num1=number; long rs=num1+1;
            */
    
            //浮点型
            // float  包装类:java.lang.Float
            float f1 = 234.5f;
            System.out.println("float 二进制位数:" + Float.SIZE);  //float 二进制位数:32
            System.out.println("最小值:" + Float.MIN_VALUE);  //最小值:1.4E-45
            System.out.println("最大值:" + Float.MAX_VALUE);  //最大值:3.4028235E38
    
            // double 包装类:java.lang.Double
            double d1 = 123.4;
            System.out.println("double 二进制位数:" + Double.SIZE);  //double 二进制位数:64
            System.out.println("最小值:" + Double.MIN_VALUE);  //最小值:4.9E-324
            System.out.println("最大值:" + Double.MAX_VALUE);  //最大值:1.7976931348623157E308
    
            //字符型
            // char  包装类:java.lang.Character
            char c = 'A';
            System.out.println("char 二进制位数:" + Character.SIZE);  //char 二进制位数:16
            // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
            System.out.println("最小值:" + (int) Character.MIN_VALUE);  //最小值:0
            // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
            System.out.println("最大值:" + (int) Character.MAX_VALUE);  //最大值:65535
           
            //布尔型
            // boolean  true/false
            boolean isboolean = false;
            if( i < 100){
                isboolean=true;
            }
            System.out.println(isboolean);  //true
     
            //引用数据类型:String、对象、数组
            //String的使用(https://blog.csdn.net/ScarletLina/article/details/79852101)
       
            //类型之间的转换(常见)布尔型和其它基本数据类型之间不能相互转换;
            //byte型可以转换为short、int、、long、float和double;   
            //int可转换为long、float和double;
            int a = 1;  
            long lc = a;  
            System.out.println(lc);     
    
            //short可转换为int、long、float和double;       
            short s1 = 1; s1 +=1;//s1 = s1 + 1;(编译错误)
            System.out.println(s1);
    
            //char可与int相互转换;
            int aa=21517;
            char sa=(char)aa;
            System.out.println("aa:"+sa);
            char c1 = '名';
            int num =c1;
            System.out.println(num);
    
            //强制转换
            //long可转换为float和double;
            //float可转换为double;
        }
    }
  3. 注释
    //单行注释
    /*   */区域注释
    /**  **/文档注释+ 
  4. 访问修饰符:public(公共的)、protect、default(包访问权限,即在整个包内可被访问)、private(私有的)。控制符能够控制类中成员的可见性
  5. 流程控制语句
    1)、if(判断条件){语句1;语句2;..语句n;}
    2)、if(判断条件){代码1;}else{代码2;}
    3)、if(判断条件){if(判断条件){代码1;}else{代码2;}}else{代码2;}
    4)、switch(判断表达式){
    case 选择值:语句1;
              break;
    ...
    case 选择值n:语句n;
              break;
    default               语句n;


    }
    注:判断表达式的类型只能为byte、short、char、int、enmu(JDK1.5)和String(JDK1.7)
    5)、while(循环条件){语句1;语句2;...}
    6)、do{语句1;语句2;...}while(循环条件判断)
    7)、for(初始化语句;循环条件;迭代语句){语句1;语句2;..语句n;}
    注:break(跳出整个循环)、continue(结束本次循环,继续下一轮循环)、return(返回一个值并结束该方法)
  6. 数组是有序数据的集合
    1、声明数组
    数组类型[] 数组名;
    数组类型 数组名[];
    
    //示例:声明一个int类型数组
    int[] intArr;
    
    2、数组初始化
    数组名=new 数据类型[]{元素值1,元素值2,...元素值n}
    //示例
    intArr=new int[]{99,98,55,66};
    数据类型 数组名[]={元素值1,元素值2,...元素值n}
    int[] intArr={99,98,55,66};
    
    
    3、一维数组
    int array[] = {1, 5, 3,2,5,8, 4};//数组的定义
    for(int i=0;i<array.length; i++){
    	System.out.println(array[i] );
    }
    		
    4、二维数组
    //数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度];(静态初始化)
    int arr[ ][ ] = { {1,2}, {2,3}, {4,5} };
    int sum=0;
    for(int i=0;i<arr.length;i++){
    	for(int j=0;j<arr[i].length;j++)//利用嵌套for循环来遍历二维数组
    	{
    		sum+=arr[i][j];//每遍历出一个元素则叠加一次
    		System.out.println("arr[i][j]:"+arr[i][j]);
    		System.out.println("sum:"+sum);
    	}
    }
    System.out.println(sum);
    
    //		数据类型 数组名 [ ][ ] = new 数据类型[m][n](动态初始化)
    //		数据类型 [ ][ ]  数组名 = new 数据类型[m][n]
    //		数据类型 [ ]   数组名 [ ] = new 数据类型[m][n]
    //		int  arrindex1 [ ][ ] =new  int [3][2]; 
    //		int [ ]arrindex2[ ]  =new  int [3][2]; 
    		int [ ][ ]  arrindex=new  int [3][2];  //3行2列
    		System.out.println("arrindex的数值:");
    		System.out.println("arrindex.length:"+arrindex.length);
                    for(int i=0; i < arrindex.length; ++i){
            	    System.out.println("arrindex[i].length:"+arrindex[i].length);
            	    for(int j=0; j<arrindex[i].length; ++j){
             	       arrindex[i][j] = i*j;
             	       System.out.println(" i:"+ i);
             	       System.out.println(" j:"+ j);
             	       System.out.println("arrindex[i][j]:"+arrindex[i][j]);
                        }
                    }
                    for(int i=0; i<arrindex.length; ++i)
                    for(int j=0; j<arrindex[i].length; ++j){
            	   System.out.println(arrindex[i][j]);
                   }
    	       System.out.println("arrindex的数值:");
  7. 面向对象的特点:继承、封装、多态
    1)、继承:将已存在的类作为基础,建立新的技术【】 2)、封装:一种信息隐蔽技术,属性私有化,并提供公共方法访问私有对象(类的属性私有化,给属性提供get、set方法来取值赋值)
    public class A{
     private int age; //私有属性
    
     //提供两个公共方法,对类的私有属性进行赋值和取值
     public int getAge(){
       return age;
     }
     public void setAge(int age){
       this.age=age;
     }
    
    }
    
    3)、多态:重写和重载
    重载:同一个类中含有两个或两个以上的方法名相同,但他们的形参列表不同,则称为方法的重载
    public class Overload{
    
        public void test(){
           System.out.printLn("无参数方法");
        }
        public void test(String msg){
           System.out.printLn("重载方法"+msg);
        }
    
    
        public static void mian(String[] args){
            Overload ol=new Overload();
            ol.test();
            ol.test("测试");
        }
    }
    
    控制台输出
    无参数方法
    重载方法测试
    重写:子类重写父类的方法,方法名、参数列表和返回类型完全一样
     
  8. 对象、类、属性、方法
    类是对象的抽象、属性是类的特征,对象是类的具体实例
    方法是类或对象的行为特征的抽象
  9. 静态修饰符static
    静态变量是被类的所有实例共享的
    类名来访问类的变量
    public class Demo{
    
        private static String name="张三";//静态变量
        private String sex;
        private static int age=12;
        
        public Demo(String sex){
            this.sex=sex;
        }
        
        //静态方法
        public static void age(){
            System.out.println(age);
        }
    
        public void info(){
            System.out.println(sex);
            System.out.println(name);
    
        }
    }
    
    public class Test{
       
        public static void main(String[] args){
            Demo.age();
            Demo d=new Demo("男");
            d.info();
        }
         
    }
    
    控制台打出:
    12
    男
    张三
  10. 构造方法:用来创建实例是执行初始化
    public class ITCompany{
    
        private String name;
        private int age;
        public ITCompany(){
            //无参构造方法
        }   
        public ITCompany(String name,int age){
           //有参构造方法
           this.name=name;
           this.age=age;
    
        }
    
    }
    
    注:构造方法不可以用void修饰
  11. this关键字和super关键字(注:调用构造方法时,不能同时出现。都需要放在首行)
    1)、this关键字表示当前对象
    this调用当前对象的属性和方法
    this调用自身对象的构造方法
    public class ITCompany{
    
    
        private int age;
        public int getAge(){
           return age;
         }
        public void setAge(int age){
           //this调用当前对象的属性
           this.age=age;
         }
    
    
        public ITCompany(){
            //无参构造方法
        }   
        public ITCompany(String name,int age){
           //有参构造方法
           //this调用自身对象的构造方法
           this.name=name;
           this.age=age;
    
        }
    
    }

    2)、super关键字:表示当前对象的父类引用
    调用父类的成员的属性和方法
    调用父类的某个特定的构造方法

  12. final关键字
    1)保持父类中的某个方法的操作在被继承是不会发生改变
    2)被final修饰的方法,子类不允许重写该方法
    3)在一定程度提高该方法的执行速度,在调该方法时,不需要进行覆盖判断
  13. 抽象类
    抽象类主要用于继承,不能被实例化。抽象类的具体子类必须实现抽象类所有的抽象方法
    一个类被abstract修饰,该类就是抽象类
    某个方法被abstract修饰,该方法是抽象方法
    一个类只要有一个抽象方法,该类就是抽象类
    抽象类可以有非抽象方法(普通方法)
  14. 接口
     
  15. 实例
  16. 方法:语句的集合
  17. 循环
    //循环while、 do…while、for 
    int a=3,b=5;
    int i=0;
    while(a<b){
    	i++;
    	System.out.println("i:"+ i);
    	if(i==4){
    		break;
    	}
    }
    		
    int x=0;
    do{
    	x++;
    	System.out.println("x:"+ x );
    	if(x==10){
    		break;
    	}	        
    }while( b <10 );
    		
    for(int j =0;j < b; j ++) {
    	System.out.println("j : " + j );
    }
  18. 运算符:算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符(按其功能,列举常用的)
    //算术运算符:+、–、* 、/、%、^、! 、|X|
    int a=3,b=5;
    int num=0;
    //+(加号) 加法运算
    num=a+b;
    System.out.println(num);//8
    //–(减号) 减法运算
    num=b-a;
    System.out.println(num);//2
    //*(星号) 乘法运算
    num=a*b;
    System.out.println(num);//15
    // /(正斜线) 除法运算
    num=b/a;
    System.out.println(num);//1
    //%(百分号) 求余运算
    num=b%a;
    System.out.println(num);//2
    //^(乘方) 乘幂运算
    num=b^a;
    System.out.println(num);//6
    // 求正 Math.abs(变量)
    num=a-b;
    System.out.println(Math.abs(num));//2
    //赋值运算=、*=、/=、%=、+=、–=、<<=、>>=、&=、^=、|=
    System.out.println("===========赋值运算===============");
    int c=3,e=2,f=e;
    c*=e;
    System.out.println(c);//6
    System.out.println(e);//2
    c=c*e;
    System.out.println(c);//12
    System.out.println(f);//2
    int d,g=3,h=5;
    d=h-g;
    System.out.println(d);//2
    d+=g;
    System.out.println(d);//5
    System.out.println(g);//3
    d=+g;
    System.out.println(d);//3
    System.out.println(g);//3
    //逻辑运算符  &与&&、|与||、&&(逻辑与)", "||(逻辑或)", "!(逻辑非)
    int number=2,num1=3,num2=5;
    if(num2<num1||num1>number){
    	System.out.println("||满足条件");
    }
    if(num2<num1&&num1>number){
    	System.out.println("&&满足条件");
    }
    if(!(num2<num1)&&num1>number){
    	System.out.println("!满足条件");
    }
  19. 异常:

    java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字。

    //java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字。
    		
    //		语法:
    //			Try{
    //			  可能出现异常的代码
    //			}catch(Exception e){
    //			  出现异常后的处理
    //			}finally{
    //			   不管出现异常与否都要执行的代码
    //			}
    
    //		Throw是代码需要创建一个异常时的关键字,写在方法体里
    //		Throws是当前方法会有异常抛出的声明,写在方法签名
    
  20. 正则表达式:Java JDK 1.40版本中,自带了正则表达式的包(java.util.regex)
  21. 时间转换
    package org.com.test;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Random;
    
    public class Times {
    	public static void main(String[] args) {
    		Calendar cal = Calendar.getInstance();
    		System.out.println("cal:"+cal);
    		int year = cal.get(Calendar.YEAR);
    		int month = cal.get(Calendar.MONTH) + 1;
    		int day = cal.get(Calendar.DATE);
    		int nowHour = cal.get(Calendar.HOUR_OF_DAY);
    		System.out.println(year);
    		System.out.println(month);
    		System.out.println(day);
    		System.out.println(nowHour);
    		
    		//使用Calendar来获取当前日期和时间
    		SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS");
    		System.out.println("format获取的:"+format);
    		String time=format.format(Calendar.getInstance().getTime());
    		System.out.println(time);
    		
    		SimpleDateFormat format1=new SimpleDateFormat("yyyy-MM-dd");
    		String time1=format1.format(Calendar.getInstance().getTime());
    		System.out.println(time1);
    		
    		SimpleDateFormat format2=new SimpleDateFormat("HH-mm-ss-SSS");
    		String time2=format2.format(Calendar.getInstance().getTime());
    		System.out.println("time2:"+time2);
    		
    		Calendar calendar = Calendar.getInstance();
    		System.out.println("Calendar获取的是:"+calendar);
    		System.out.println(calendar.getTime());
    	}
    }
  22. BigDecimal的用法

    package org.com.test;
    
    import java.math.BigDecimal;
    public class BigDecimalDemo {
    
    	public static void main(String[] args) {
            //使用数字构造和字符构造的区别
    		double num=3.1415; 
    	    BigDecimal value1=new BigDecimal(num); 
    	    System.out.println("数字构造:"+value1);  // 数字构造:3.141500000000000181188397618825547397136688232421875
    	    BigDecimal value2=new BigDecimal(Double.valueOf(num).toString());   
            System.out.println("字符构造:"+value2);  //字符构造:3.1415
            
            BigDecimal value =value2.setScale(2, BigDecimal.ROUND_HALF_UP);   
            System.out.println(value);   //3.14
            //舍入趋向于零的方式   
            value=value2.setScale(2, BigDecimal.ROUND_DOWN);   
            System.out.println(value);   //3.14
            //舍入远离零的方式   
            value=value2.setScale(2, BigDecimal.ROUND_UP);   
            System.out.println(value);   //3.15}
  23. 随机数

    package org.com.test;
    
    import java.util.Random;
    
    public class RandomDemo {
    	public static void main(String[] args) {
    		Random random = new Random();
    		String only=String.valueOf(random.nextInt(6));//6是不包含在内的,只产生0~6之间的数。
    		String onlysign = String.valueOf(random.nextInt(5)+4);//random.nextInt(5)只产生0~5之间的数(0,1,2,3,4),随机生成4、5、6、7、8
    		System.out.println(only);//0、1、2、3、4、5
    		System.out.println(onlysign);//4、5、6、7、8
    	}
    }

三、面向对象(继承、封装、多态)

  1. 继承:
  2. 封装:就是隐藏对象的属性和实现细节,仅对外提供的公共访问方法(主要采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节{Java语言访问修饰符})。好处:隐藏了类的实现细节;让使用着只能通过程序员规定的方法访问数据;可以方便的加入存取控制语句,限制不合理操作。
  3. 多态(重载、重写)
  4. 接口
  5. 抽象类
  6. 枚举

四、知识延伸

  1. 集合
  2. 数据库连接:原始数据库连接
    public class ConnectDB {
    	public static Connection getConnection() {
    	    Connection connection = null;
    
    	    try {
    	        Class.forName("com.mysql.jdbc.Driver");
    	        //-----在url后面添加useUnicode=true&characterEncoding=UTF-8这些参数是为了让mysql数据库可以识别中文-----
    	        String url = "jdbc:mysql://数据库ip地址/数据库名?useUnicode=true&characterEncoding=UTF-8";
    	        String username = "root";
    	        String password = "";            
    	        try {
    	            connection = DriverManager.getConnection(url,username,password);
    	            System.out.println("数据连接成功!");
    	        } catch (SQLException e) {
    	            // TODO Auto-generated catch block
    	            e.printStackTrace();
    	        }
    	    } catch (ClassNotFoundException e) {
    	        // TODO Auto-generated catch block
    	        e.printStackTrace();
    	    }        
    	    return connection;
    	      }
    	
    	public static void main(String[] args) {
    		getConnection();
    	}
    }
  3. 代码的优的目标:提高代码运行的效率,减少代码的体积。( sql优化、存储过程、视图、连接池;html静态化;不用保存太多的信息在HttpSession中;异常处理;尽可能的使用Java自身提供的API;尽量减少I/O操作(控制台、日志))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值