java基础

java 起源

90年代印度尼西亚爪洼岛sun公司,现在被oracle收购,mysql和solorais服务器现在也归oracle公司

java三种架构

j2se 标准版,jdk的配置,常用的类包 开发安卓桌面应用(api)
j2ee企业版,web应用 ee为企业分布式应用的开发提供的平台,包含jdbc jndi rmi jms ejb jta等技术
j2me:

配置环境变量

   1. 下载jdk1.8 安装 
   2. 配置 环境path   ----- jdk/bin 路径下
   3. 配置 JAVA_HOME        jdk安装路径
           检测 java -version      javac -version   查看是否一致 
            先javac编译 a.java 成字节码,   然后 java a 解释 (DeskTop)

java和c语言区别

java 基本型 byte,short,int,long ,float,double,*boolean,char(2个字节)*
引用型: 数组array, 类class,接口interface,枚举enum

                  java                               C
1   面向对象,以类为组织单位                     面向过程,函数为单位
2.  数组不可以越键,且定义int a[]不能放数字    可以越键,可以放数字 int a[2]
3. 局部变量必须初始化,没有全局变量         局部变量可以不初始化,存在全局变量
4. 比C语言多 boolean类型,char是2个字节,           char是一个字节
5.  需要真假表达式 判断语句 while(true)          非0 即真 while(1) 
6.gc垃圾回收机制,                                            
7.没有C语言就没有java,java调用了大量C语言写好的dll(dynamic link library库函数,
8.  解释性语言,jvm和操作系统打交道,java解释             编译语言
9.执行是  javac a.java  java a                       gcc a.c 然后 ./a.out
10目前没使用goto                                         goto
11.sizeOf                                          instanceOf 实例
12. 需要添加返回值类型                            默认int 返回值类型## 标题

char和String

char类型

       char ch=' a'; 
                  String x="yan";  char只可以单字符
                  
    System.out.println( ch );          结果字符a
    System.out.println(  (int )ch);      转成数字 97
    System.out.println(ch+2) // 向上转型成  int 类型 99

String 类型 不是基本型,引用型,有final修饰不可变字符,不可以继承

         String str=null;// str在栈,存放地址
       str=new String("YanPeiLun"); //new 在堆申请内存,存放值  
      ***char ch= str.charAt(1);    获取字符
       char c=  str.indexOf("y");  获取索引***
       
        str.trim();去除首尾空
        str.replace( "old老字符", "new 新字符" ); 替换
        str.toUpperCase() 转大写
        str.length();
       str.substring();截取  [);
       
        equals比较值,                    == 比较地址

StringBuffer 和 StringBuilder

   StringBuilder  效率高,不安全
   StringBuffer   效率低,安全    
      常用 reverse(), append(), delete();

面向对象特点

**封装,继承,多态**

1.封装: 把数据封装成包,对属性私有化(增加权限),对外提供方法,保护数据的完整性;

2.继承:子承父(基类,超类),不能直接调用父类的私有方法,(所有的父类都是Object)
        1. 提高代码的利用率;
        2. 可以扩展子类的功能;
        3. 只能单继承;
        
3.多态:方法名相同但是结果不同,运行时多态和编译时多态;
      编译时多态:    重载  overload  参数个数,顺序,类型不同都可以构成重载 (*返回值类型无所谓*)
      运行时多态: 重写override   和父类参数个数保持一致,返回值类型无所谓
                         构造器不可以重写,可以重载

局部变量, 实例变量,类变量(静态变量)

 1.   **局部变量**  ---`存在于函数体内(方法内),必须初始化`  ,
 2. 存放在栈(地址)
 
 3.   实例变量,跟随对象走,需要new 对象()调用变量  (存放在堆) 
 
 3.类变量,static修饰 , 通过类直接调用变量或者函数,不需要申请内存new,不存在
 this(因为this是对象),引入包的时候直接包名.类.变量(函数)

class test {
int a;
static int b;
test(a,b){
this.a=a;
this.b=b; ----b 2–10 是静态跟着类走 取决于最后的值
} ------------------------ ----t1.a 1 跟着对象
------------------------- ----t2.a 5 跟着对象
main(){
test t1=new test(1,2);
test t2=new test(5,10);
System.out.println(b)-----b作用域是类 跟着类 走

**System.out.println()
   类大写,System
   类直接调用是静态方法,out
   .println()是方法, 因为有()

**抽象类和 接口 **

抽象方法

 1.不能实例化的类( 不能new对象  ),要想实例化通过子类
 
 2只有方法的声明,没有定义     比如 public void start();
 
 3.抽象方法,如果是类,则必须是抽象类,抽象类 可以没有抽象方法(abstract 修饰)
 
 4子类继承,必须.实现父类方法 public void start(){  大括号修饰      };
 
 5.普通变量声明

接口 interface

      1.类多实现接口,class Student implements  Person,People{     }
                 interface Person{
                   void eat();  // 接口只能抽象方法,定义方法 public abstract 修饰
                   int age=10; // 默认static final 常量修饰 int age
              };
      
      2.接口里面只有抽象方法,和常量final

构造函数*

与类同名,没有返回类型,作用申请内存 ,可以 重载,但不可以重写
               public class Test{
                                int a;
                                String b;
                     public Test{   //无参
                          }
                   public Test(a,b){ // 有参 
                   this.a=a;    this指当前对象 
                   this.b=b;
                   }              
                                }

访问修饰符 以及 static

  `public` `protected(同包,子类)` `default(同包)`   `private` 
  
  static 修饰 属类变量或者函数 ,类直接调用

运算符 和 数学类

   + -  * /  % 符号跟左边  
   +                          ++ a 先加1 后运算         
   
                              a++先赋值运算 后 自增 
    
  byte i=3;
   while(i++>2) {// i=3 >2 成立 3++=4 然后4++=5; 5>2循环
	   i++;
   }
   System.out.println(i);//-126
   
  int c=3;
 while(c++<4) { //i=3 i++ 变为4 
	 c++;//4 加1 =5; 5++ >4 跳出 变为 6
 }
  System.out.println(i); 
  System.out.printf("%d",i);



    位运算  不管前后是否正确都要运行前后  &   |       
           !  ^( 异或 相反为真)
           
           最快的方法实现2*2*2      左移运算 2<<3
     && || 短路, 一真 一假判断 
       Math.random()     随机数[0,1)
            floor() 向上取整 
            ceil()向下取整
            sqrt()开方
            round() 四舍五入

循环控制

 **for*
     遍历 两种方式 
  for(int i=1;i<a.length();i++){  }
  for(String s  str){     }

        while(true)死循环  {  }
        do{   } while();

continue; 不要本次结果,不往下执行,返回循环结构代码
break; 跳出最近的循环

转型错误

浮点数默认double    基本型  0    引用null   布尔 默认false       return 代表结束,或者返回值

        folat f=3.14 ; 错在 3.14是double 型  需要 float f=3.14F;
        
         short a=1 ;    a=a+1;  错在 1 是int 类型 ,结果 应该int 型  不是  short

int 和Integer区别

int 是基本型,Integer是包装类, 事先new好的对象
Integer a=2;
Integer b=2 ; 则 a==b 如果是new Integer(2) 结果不同, 申请内存了,地址改变

常见的异常

       **

1.索引越键 OutIndexOfException
2.栈溢出(自己调用自己) stack
3.空指针 NullPointerExceptiom
4.Io异常 IoException
5.文件找不到 ClassNotFount
6.转型异常 ClassCastException
7.不支持的操作 UnsupportedOperationException(可读问题)
8.端口占用 BindException: Address already in use: JVM_Bind
关闭端口, 1.找到进程号 netstat -ano | find “:3306”
2. taskkill /pid 进程号 -t -f

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值