Java基础笔记


第一章:开发简单Java应用程序

1、 计算机程序:一组有序指令的集合

2、Java语言分为3个领域:

    javaSE是Java技术核心(指桌面应用程序):QQ、百度云…

    javaEE是企业标准(面向Internet的应用程序):京东、淘宝….

    javaME(移动设备、小型嵌入开发):手机上的软件

3、 三步骤:

    编写源程序(程序以.java结尾)

    编译(使用javac指令编译源程序 ,编译后的文件 以.class结尾) 

    运行(使用java指令运行编译后的文件)

4、 使用Myeclipse开发java程序步骤:

    1)创建项目

    2)编写源代码

    3)编译

    4) 运行

 

5、 外层框架

    Public class 类名{

    }         

    注意:类名和文件一致

 

6、  内层框架

    Public static void main (String[] args) {

    }

    注意:方法名必须是main

    主方法四要素:public  static void String[] args

 

7、 输出指令

    System.out.println(“女”);

    System.out.println(“18’);

    注意:System首字母大写,

           Println和print区别:println输出后换行;print只输出不换行

        (建议用Println

8、\n和\t

      (1)\n换行;

    (2)\t制表位,4个字符作为一个单位

9、注释:

    1)// 单行注释 以//开始到行末结束

    2)/**

      *

      */文本注释

    3)\*……*\ 多行注释 多行用于注释代码块

 

10、java相关的技术:

    Javascript  jquery  mysql  前台

    jsp servlet hibernet spring struts2后台

    orcale ……数据库

 

 第二章:变量、数据类型和运算符

 

1、变量:存储数据的一个基本单元。

 

2、变量的声明和赋值:

 

       1)声明并赋值:数据类型 变量名=;      例:int  price=1000;

 

       2)声明、赋值分两步:数据类型 变量名;   例: int  price;

 

                 变量名=;              price=1000;

 

3、数据类型2种:

 

    (1)基本数据类型8种:

 

        1)byte 长度:-128~127-27次方到27次方减1

 

        2)short   -215次方到215次方减1

 

        3) int   -231次方到231次方减1

 

        4) long  -263次方到263次方减1   99l

 

        5)foat   99f

 

        6)double  双精度double price=32.5;

 

        7)boolean 真(true) 假(falsebolean isBrand=true

 

        8)char   一个字符 ,两个字节 范围0~65535 参照ASCII字符编码表 char sex=’男’;   char num=65;(输出A)

 

    (2)引用数据类型:

 

        1)String 字符串  例: String name=张三;

 

        2)类

 

        3)接口

 

         4)数组

 

4、变量命名规范:

 

    (1)英文单词或拼音

 

    (2)首字母:以字母、下划线、$开头;

 

    (3)当多个单词组成的变量名:以驼峰式命名法取名,例:studentName

 

    (4)变量名要起到见名知义的效果

 

5、赋值运算符:= 把右边的值赋给左边

 

6、算术运算符:+ -    *    /       %(取余)

 

7num++;//num=num+1;num+=1;

 

  num--;//num=num-1;num-=1;

 

  System.out.println(--num);//先计算再输出,(++num同理)

 

  System.out.println(num--);//先输出再计算,(num++同理)

 

 

8double avg=(90+99)/3.0  发生自动类型转换

 

    自动类型转换的条件;

 

        1) 类型兼容:(intdouble都是数值型)

 

        2) 目标类型大于源类型

 

9、强制类型转换:(数据类型)变量名  (数据类型)值

 

    例:double num=5.5;  int  result=(int)num;

 

    或者int  result=(int)5.5;

 

 

第三章:运算符和条件结构

1、保存真或假,使用boolean 变量

      boolean 有两个值:true真、false

2、从控制台接受输入信息,通过创建扫描器

    Scanner input=new Scanner(System.in);

       Int age=input.memtInt();//接受int类型

       String name=input.next();//接受String类型

 

3、关系运算符

      >  、<  、 >= 、  <= 、  ==   、 !=

4、===的区别

    ==比较,=赋值

5、条件判断if

    if(表达式){

        语句

    }//当表达式为true真时执行语句

6、运算符分为单目、双目、三目

    单目: ++   --

    双目:=  +  -  *  /  %  |  ||  &  &&  ==

    三目:?://int sign=java>90?1:0;三目表达式

7、逻辑运算符

    | 、 & 、 || 、 && 、 

      优先级顺序:()>>算术运算符>&&>||>赋值运算符=

      多使用()控制优先级

8ifelse

    if(表达式){

          语句1

    }else{

          语句2

    }

  当表达式为真,执行语句1 ;当表达式为假,执行语句2

 

 

9、多重ifelse ifelse

    if(条件1){

        语句1

    }else if(条件2){

        语句2

    }else if(条件3{

        语句3

    }else{

        语句4

    }

 

10switch(表达式){

   case 1

        语句1

        Break;

  case 2

        语句2

        Break;

  case 3

        语句3

        Break;

  default:

        语句4

      Break;

  }

jdk版本在1.7或者1.7以上,表达式是值可以是String类型;值不能相同;

break的作用是跳出switch结构。

11、多重if 结构和switch结构的使用场合:

      多重if判断区间值,switch判断等值

 

第四章:循环结构(一)

 

1while循环:

 

    语法:while(循环条件){

 

          循环操作;

 

       }

 

    特点:先判断,在执行。

 

 

2==用于数字比较,比较的是地址;

 

   .equals用于字符串比较,比较的是字符;

 

(如:!anwer.equals(“y”)

 

 

3do while

 

    语法:do{

 

          循环操作;

 

        }while(循环条件);

 

    特点:先执行,再判断

 

4whiledo while的区别:

 

       除了语法上不同外;

 

      当条件不满足时:while一次都不执行;而do while至少会执行一次

 

5、调试方法:设置断点 、单步执行、 观察变量

 

6、调试步骤:

 

    1)猜测出错位置,设置断点

    2)单步运行

    3)观察变量的值

    4)发现问题

    5)修正代码,重新运行

    6)解决问题

 

 

第五章:循环结构(二)

 

1for语法

 

    for1参数初始化;2条件;3参数叠加){

 

        //4循环操作

 

    }

 

    特点:先判断,再执行

 

    顺序:1 2 4 3

 

 

2break改变程序的控制流,多用于循环中;结合条件结构和分支结构,跳出整个循环

 

  Continue只能用在循环中;跳过循环体剩下的语句去执行下一个循环,结束当前的循环,进行下一步循环

 

3whiledo-whilefor的区别:

 

    (1while语法:while(循环条件){循环操作}

 

              特点:先判断再执行

 

    (2do-while:do{循环操作}while(循环条件);

 

              特点:先操作再执行

 

    (3for语法:for(参数初始化;条件;参数改变){循环体}

 

              特点:先判断再执行

 

              使用场景:确定循环次数

 

 

4、使用循环的步骤:

 

    (1)确定循环条件和循环体

 

    (2)套用语法

 

    (3)检查能否正常退出

第六章:数组

1、数组:是一个变量,存储相同数据类型的一组数据。

2、数据优点:减少代码量,容易查找

3、数据的步骤:

    (1)声明数据:例:int score[];或者int[] score;

    (2)开辟空间:例:scores=new int[5];

    (3)赋值:例:scores[0]=100;

    (4)使用:例:scores[0]=scores[0]+20;//最终的结果是:scores[0]=120;

 

4、数组声明的三种方式:

    (1Int num []=new [4]{1,2,3,4};

    (2int [] num=new int[4]

    (3int num []={1,2,3,4}

 

5、引用数组元素的方式:

    数据名称[下标];

      例:num[0];

 

6、值传递和引用传递的区别:

    值传递:不同的变量会分配不同的存储空间;不同的变量会分配不同的存储空间。

     引用传递:赋值是把原对象的引用传递给另一个引用;两个引用指向同一块内存空间。

 

7、二维数组:

    语法:数据类型[][]数组名=new 数据类型[一维数组的长度][二维数组的最大长度]

        数据类型 数组名[][]=new 数据类型[一维数组的长度][二维数组的最大长度];

           例:int score[][]=new int[5][10];//int [][]score=new int[5][10]

    结论:二维数组实际上是一个一维数组,它的每一个元素又是一个一维数组

 

8、赋值方式:scores={{1,5,8,9,10},{123,120}};

 

 

第七章:类和对象

 

1对象的特征→指:类的属性  (每个对象的每个属性都有特定的值)

 

 对象的操作→指:类的方法

 

2、封装

 

    对象同时具有属性和方法两项特性。

 

    对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相成,不能分割。

 

3、类和对象的区别:

 

    类:是抽象的概念,仅仅是一个模子,确定了对象的属性和方法;

 

    对象:能够看得见摸得着的实物,具有静态和动态特性。

 

4、定义类的步骤:

 

    (1)定义类名

 

    (2)定义类的属性:访问修饰符 属性类型 属性名称=默认值;

 

    (3)定义类的方法:访问修饰符 返回值类型 方法名称(){

 

                方法体;

 

              }

 

5、成员变量和局部变量:

 

    成员变量:上级是类,作用域是整个类中

 

    局部变量:上级是方法,作用域是当前的方法

 

6、类名命名规则:

 

    (1)不能使用Java的关键字

 

    (2)首字母可以是字母,也可以是_$

 

    (3)不能包含空格和标点符号

 

7、创建对象:关键字:new

 

    类名 对象名=new 类名();

 

      例:YuntuSchool Beijing=new YuntuSchool();

 

8、使用对象:关键符号:.

 

    对象名.属性=值;例:beijing.schoolName=云图智联北京中心;

 

    对象名.方法;      例:beijing.showInfo();

 

9、面向对象的优点:

 

  (1)便于程序模拟现实世界中的实体;

 

  (2)隐藏细节(封装):对象的行为和属性被封装在类中,外界通过调用类的方法类获得,不需要关注内部细节如何实现。

 

  (3)可重用

 

可以通过类的模板,创建多个类的对象。

 

 

10、类是引用数据类型:

      在传值时,对象2=对象1传的是地址,一个改变,另一个也变;

 

           对象2.name =对象1.name;传的是值,相互独立。

 

 

 

 

第八章:类的方法(一)

1、类的方法语法:

   

       访问修饰符 返回值类型 方法名(){

                 方法主体;  

     }

 

2、方法名的规范:

      1.必须以字母、“_”或“$”开头

      2.可以有数字,但不能以数字开头。

      3.如果方法名是多个单词组成 ,第一个单词的首字母小写,  其后单词首字母单词大写。

      4.方法名一般都采用动词。

 

3、方法的返回值

      1.有返回值:必须告知返回值的数据类型,并且返回相应的值。

            例:public String getName(){

                      return"张三";

                }

      2.无返回值:void

          :public  void showInfo(){

 

       }

 

4、调用方法:

      1. 不同类中:对象名.方法名();

      2.同类中:方法名();

  方法之间可以相互调用

 

5、变量声明的位置决定了方法的作用域

       (1) 在方法中声明的变量叫做局部变量,作用域是当前的方法中。

        (2)在类中声明的变量叫做成员变量,如属性,作用域是整个类中。

 

6、包的命名规范:

    (1)包名由小写字母组成,不能以远点开头或结尾

    (2)自己设定的包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名 javagroup.net

    (3)自己设定的包名部分依据不同机构各自内部的规范不同而不同

7、包的命名方式:package

    公司的网址倒过来写,后加上项目名称,再加上所属的文件夹名称。

     com.zhaopin.ts.entity

     com.zhaopin.ts.servlet

     com.zhaopin.ts.dao

     com.zhaopin.ts.dao.imp1

     com.zhaopin.ts.biz

     com.zhaopin.ts.biz.imp1

 

8、doc注释:多用于注释类的信息

      /** 开始

    

      */结束

     

第九章:类的方法(二)

1、带参的语法:

    访问修饰符  返回值类型 方法名称(参数列表){

        方法体;

 

    }

例:public String getFuirt(String fuirt){

          String zhi=fuirt+m+"";

          return  zhi;

 

    }

 

2、调用带参方法:

        同类中, 非静态方法,方法名(参数列表);

        不同类中,对象.方法名(参数列表);

 

3、带参方法的参数需要注意:

        1.形参的数据类型和实参的数据类型一致。

        2.方法形参的数量和调用方法实参的数量要一致。

 

 

第十章:字符串

 

1、 声明字符串的方法:(2种)

 

    1String s=您好;

 

    (2String s=new String (你好);

 

2、 字符串是长度:

 

    字符串.length();

 

3、 equals  比较的是,一般用于字符串的比较;

 

    == 比较的是地址,一般用于数字的比较。

 

 

4、字符串的方法比较:

 

    (1)equlasIgnoreCase() 比较时忽略大小写

        例:name.equlasIgnoreCase()

 

    (2)toLoerCase()转换成小写  

        例:name. toLoerCase()

 

    (3)toUpperCase()转换成大写  

        例:name. toUpperCase()

 

 

5\叫转义符

 

 

6拼接字符串:

    用”+”concat()”方法,当原字符串是有效字符串时,在其后拼接新的字符串时,会创建副本。

 

      例如:String  str=”你好;str=str+”北京;

 

         String str=new String(“你好);str.concat(“北京”);

 

特点:使用”+”concat()”方法,会造成内存浪费,性能比较差,线程安全。

 

 

7indexOf(参数);获取字符或字符串的下标;

 

    (1indexOfint ch

          例如:str.indexOf();

 

    2indexOf(String s);

           例如:str.indexOf(“.java”);

 

8lastIndexOf(参数);获取最后一个字符或字符串的下标

 

    (1lastIndexOf(int ch);

        例如: lastIndexOf();

 

 

 

    (2lastIndexOf (int ch);

       例如: lastIndexOf(“.java”);

 

9subString(参数);截取字符串

 

    (1subString(int  index);

          下标从0开始,从index开始截取到最后结束。

 

    (2subString(int  beginIndex,int endIndex);

          下标从0开始,从beginIdex开始截取,包括beginIdex位置,到endIdex结束,不包括endIndex位置。

 

 

10trim()方法: 去掉字符串前后空格。

 

 

11split()方法:  分割字符串 ,返回数组

 

    例如:String st="长亭外-古道边-芳草碧连天-天外天-人外人";

 

       String [] wor=st.split("-");

 

       for (int i = 0; i < wor.length; i++) {

 

          System.out.println(wor[i]);

 

       }

 

12StringBuffer类: 用于频繁拼接字符串时使用。

 

    例如:StringBuffer  sb=new StringBuffer(“);

 

       Sb.append(“好吗?);

 

       Sb.insert(1.”)

 

       String word=sb.toString();

 

       System.out.println(word);//你们好吗?

 

特点:在自身上追加字符串,不会产生副本,所以节省内存,性能高,线程安全。

 

13String Builder类: 用于频繁拼接字符串时使用。在自身上追加字符串,不会产生副本,所以节省内存,性能高,线程不安全。

 

 

 

14String StringBufferString Builder三者间的区别:

 

    1) 原理: 

          String 频繁拼接时产生大量对象(副本),

 

          StringBuffer String Builder 都是在当前对象上操作,所以不会产生大量对象(副本);

 

    2) 性能:

         String< StringBuffer< String Builder

 

    3) 线程:

        String StringBuffer安全,String Builder非安全。

 

15、小结:

 

    if(操作的数据较少){

 

      String

 

    }else {

 

      If(多线程){

 

        StringBuffer

 

      }else{

 

       String Builder

 

      }

 

    }

第十一章:抽象和封装

1、面向对象设计和开发程序的好处:

    (1)交流更加流畅 

    (2)提高设计和开发效率 

2、从现实中抽象出类分三步:

    (1) 找出它的种类————(类名)

    (2) 找出它的属性————(字段的名称)

    (3)找出它的行为————(方法名)

3、抽象的原则:

    (1)根据面向对象的思想抽象出类。

4、类图的好处:

    (1)直观

    (2)容易理解

5、构造方法:

1)系统默认的无參构造:

    例如:public Dog(){}

    注意:当程序写了自定义构造方法时,系统自带的无參构造将消失。

2)自定义的无參和有參构造:

    a.自定义无參构造:

      例如:public Dog(){

         this.name=”大黄;

         this .love=100;

        }

    b. 自定义的有參构造:

      例如:public Dog(String name,int love){

           this.name=”大黄;

           this .love=100;

        }

特点a.访问修饰符是public

   b.无返回值

   c.构造函数方法名和类名一致

      语法:

        访问修饰符 函数名称 ([参数列表]){

          [方法体;]

 

        }//[]代表可以省略(不写)

5this的含义:当前对象的引用。

    this的使用:

        this.属性

        this.方法

    this()构造函数:

        例如:this();调用了无參构造

           this.(参数1[参数列表]);调用了有參构造

6static 静态的,可以修饰属性、方法、代码块。

    被static 修饰过的属性、方法的调用方法:

        类名.属性

        类名.方法

    被修饰过的代码块:类加载时,就加载代码块。

    注意:方法里的变量不能被static修饰。

7、Final 最终的,可修饰属性,被修饰后叫常量。常量的是不可以被修改的。

    常量的命名方式全部大写。

8、在开发中,一般一个完整的实体类包括:

    (1)私有化的属性

    (2)创建getter setter 方法[有參/无參]

    (3)给getter setter方法添加控制语句

    (4)创建[有參/无参]构造方法

 

第十二章:继承

 

1、使用继承:

 

      1)方便修改代码

 

      2)减少代码量

 

2、super 继承object 类:

    super 访问父类的无参构造;super 指的是object 的无参构造。

 

     例:子类调用父类:super.属性 / super.方法

 

注意:子类不能继承父类私有属性;得用setget方法来调用;

 

       super只能写在代码块的第一句;super只能调用非私有的方法;

 

       super只能出现在子类的方法和构造方法中。

 

3、不能被继承的父类成员:

 

   private成员、子类与父类不在同包,使用默认访问权限成员,构造方法。

 

访问修饰符  

  本类  

 同包   

子类

 其他

Private

 √

 

 

 

默认(friendly)

 √

 √

 

 

Protected(受保护的)

 √

 √

 √

 

Public

 √

 √

 √

 √

 

 

 

 

4、继承:先执行父类的构造,在执行子类的构造。

 

顺序:父类属性 →父类构造方法→ 子类属性 → 子类构造方法

 

(符合is_a的关系就可以使用继承)

 

 

 

5、方法重载与方法重写:

 

 

位置

方法名

参数表

返回值

访问修饰符

方法重载

同类

相同

不相同

无关

无关

方法重写

子类

相同

相同

相同或是其子类

不能比父类更严格

 

6、多重继承关系的初始化顺序:

 

      父类属性 → 父类构造 → 子类构造

 

7、当父类不需要实例化时,把父类声明为抽象类;

 

      例:public  abstract class 类名(){}

 

8、当子类必须重写父类方法时,可以把父类的方法声明抽象方法。

 

    抽象方法要求:

 

        (1)抽象方法没有方法体

 

        (2)抽象方法必须在类中

 

        (3)final(最终)不需要被赋值

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM