A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Pisces_Tiger

初级黑马

  • 黑马币:59

  • 帖子:43

  • 精华:0

© Pisces_Tiger 初级黑马   /  2017-4-3 21:34  /  3283 人查看  /  57 人回复  /   6 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Pisces_Tiger 于 2017-5-13 17:36 编辑

不积跬步无以至千里

57 个回复

倒序浏览
本帖最后由 Pisces_Tiger 于 2017-4-3 22:09 编辑

JDK和JRE的区别: java development kit(java开发工具包)          开发Java程序                             java runtime  environment(java 运行时环境)  运行java程序
安装完jdk 自带jre   所以jre无需另外安装

path路径的配置
为什么要配置path路径 ?
1  java源文件 和 jdk下 javac.exe 、java.exe  如果在同一目录下   只需要在dos窗口中 将目录切换到文件所在目录既可
    javac Hellworld.java
     java Helloworld
2  java源文件  和 jdk下 javac.exe、 java.exe 不在同一目录  (假设jdk目录   d:\jdk1.7)
在java源文件目录下  
  d:\jdk1.7\bin  javac Helloworld.java
  d:\jkd1.7\bin  java Helloworld
3 假设此时我们设置了path  告知系统javac.exe 、java.exe 所在的目录  只需要在dos窗口下切换到java源文件目录下直接调用
    javac Hellworld.java
     java Helloworld

classpath的配置
为什么配置classpath
当程序中调用自定义类或系统定义的类时  需要指出类所在的目录  跟后面的导包一个原理
但是我们程序中用到的 String类 System类等 却没有导包  也没有进行classpath的配置  却能正确执行  why?
因为它们属于 java.lang.*   凡是用到这个包内的类  无需导入  程序允许默认使用
但我在学习时 却没有进行classpath的配置  是因为后面的编程使用集成编程工具 eclipse ,会自动进行jar包管理  无需配置classpath

提示:  使用elipse前  必须提前安装jdk







点评

1111111111111111111111111111111111  发表于 2017-4-23 10:53
回复 使用道具 举报
java字体颜色的设置
    Window -- Preferences -- General -- Appearance -- Colors and Fonts -- Java -- Java Editor Text Font选中后,点击Edit,进行修改
java其他字体颜色的修改
    Window -- Preferences -- General -- Appearance -- Colors and Fonts -- Bacic -- Text Font 选中后 点击Edit ,进行修改       
解决窗体布局乱了
    Window – Perspective -- Reset Prespective
解决控制台找不到
Window--Show View—Console
背景颜色设置值:
Window -- Preferences --editors--source hover background
85 123 205 (java代码区 设置为浅绿 保护色)
================================================
快捷键的使用 按使用频率和作用排序 (快捷键不可用 是因为有相同的快捷键冲突)
一、alt + /    我电脑宏碁的  此快捷键开始不可用   在Window -- Preferences--General  -- keys目录下
  1.  将assistant content  给成alt + /   并将 when  改成  editing text
2 。 将 word completion 改成alt + /  并将 when  改成  editing text

二、 shit + enter  将鼠标自动切换到下一行  无论鼠标在句首  句中 还是句尾

三   ctrl + alt +  down   自动复制当前行并放置在下一行
  此时我的电脑快捷键 也不能用   
解决:  桌面 -- 右击  点击图形--在快捷键管理器下  禁用 ctrl + alt +  down

四 注释  
单行注释: ctrl + /   在一次  取消注释
多行注释: ctrl + shif +/       ctr + shit + \ 取消注释

=============================================================

基本类型的转换
byte short  char  不能互转  -> int ->long ->float-> double

尤其要注意在输出语句中出现的 "+" 连接符      
字符串与数字的连接的会自动变成字符串
System.out.print("hello" + 1 + 2)      hello12
System.out.print("hello" + (1 + 2))   hello3

==============================================
简单介绍一下运算符
赋值运算符   =
算术运算符  + - * / %

求整 (/) 求余(%)
求3位数的个位 十位  百位数值
int ge = num%10
int shi = num /10%10
int bai = num/100%10  找到规律了没?


比较运算符    <  >   >=   <=    ==
逻辑运算符    |  &  ||  &&
(a>b) || (c> d)                如果第一个条件为真  就不在继续判断
(a>b) &&(c> d)             如果第一个条件为假  就不在继续比较


====================================
三元运算符  

int num = a > b ?  a : b
常常可以用来替代if else模式的选择结构

?  前 的表达式 返回一个boolean值   如果如果为真  返回 a  如果为假返回 b
等同于
if(a > b){
     num = a;
}else{
     num = b;
}

======================================
Scanner类  从键盘录入

Scanner sc = new Scanner(System.in)
录入字符串
  String str = sc.nextLine();
录入整数
int num= sc.nextInt();
回复 使用道具 举报
回复 使用道具 举报
万地高楼平地起  加油  祝你考过
回复 使用道具 举报
同一期滴兄弟,顶一下
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
祝你好运!!!
回复 使用道具 举报
流程控制语句
1 if   else  三种格式
   1.1
           if(){
                 语句体
          }
    1.2
           if(){
                 语句体
           }else{
                  语句体
             }
        1.3
             if(){
                   语句体
             }else if(){
                   语句体
              }else if(){
                   语句体
             }else{
                    语句体
                }
2  switch 结构
      switch 条件表达式 的值可以是 byte short char int类型  
         jdk1.5后  可以是枚举  enum类型
         jdk1.7后   可以是字符串  String类型

      switch (表达式){
             case 1:
                    执行语句;
                   break;
             case 1:
                    执行语句;
                   break;
             case 1:
                    执行语句;
                   break;
              default :
                      执行语句;
                       break;
       }
3    while{

      }  
      while 循环可以和for循环  相互替代  
     一般在不清楚循环次数的情况下使用while循环  
   eg:一张纸厚度1米   珠穆朗玛高峰8848米   问  这张纸折叠多少次高度会超过高峰?
                int high = 1;
                int count = 0;
                while(high < 8848){
                        high *= 2;
                        count++;
                }
                System.out.println(count);
                count = 0;
                for(high = 1; high < 8848; ){
                        high *= 2;
                        count++;
                }
                System.out.println(count);
        }
二  跳转控制语句  break 和 continue

    break 和 continue  作用于  for循环  while循环   switch 选择结构
    break: 语句执行到此   结束循环体  或跳出switch
   continue: 语句执行到此   此次循环不在往下执行   开始执行下一次循环   switch没怎么看到用continue
回复 使用道具 举报
一:  随机数 (Random)和数组(array)
  1 随机数的使用
    Random ran = new Random
    int num = ran.next(n);    生成一个0到n 的随机整数  包括0  不包括n
生成区间[m,n]随机数
  int num = ran.(n-m+1) + m;

(m ,n])、[m,n) 、 (m,n]、三种范围的数值  该如何生成?

2.   数组array

      静态初始化    int[] arr = {12,45,32};
      动态初始化    int[] arr = new int[5];   先定义数组大小   以后再赋值

数组的遍历
    for(int i = 0; i < arr.length; i++){
               System.out.println(arr);
}
  判断条件 arr.length   此length为数组属性  后面字符串的str.length() 和集合的list.size() 为方法

数组的操作常见的两个异常  1 数组越界异常  (数组的下标超出了arr.length-1) 2  空指针异常
  arr的指向为null时出现

回复 使用道具 举报
方法、

修饰符   返回值类型  方法名(参数类型 参数1,参数类型 参数2,...){
                    语句体
                    return  表达式/变量(与返回值类型相同)


修饰符:  权限访问修饰符(public   protected default private)
               public   任意访问   如果不在同一个包内  只需要导包即可
               protected     同一包内  或跨包的子类访问
                                   eg:  cn.itcast.person 包内person类定义了  protected show(){} 方法
                                             cn.itcast.student包内的student类继承了person   show()方法的最低访问为
                                               protectd  当然也可以public   如果定义为 default show()  则会报错               
           default  只能实现本包内的调用
            private   私有  只能本类内调用

在eclipse中常常在一个文件中会定义多个类   但是只能有一个 是public修饰  其他的类不能是public修饰   也不能用protcted private等修饰  可用abstract fianal修饰


方法的重载(overload) 和 方法的重写(override)

重载: 1 方法名相同
           2  参数的个数或参数类型不同
   eg:
           int add(int a, int b)
           float add (int  a, float b)
          int       add(int a, int b , int c)
上面均属于方法的重载   跟返回类型无关    只要方法名相同 、参数类型不同  就是重载

方法的重写
         方法名完全一致   大括号里面的内容不同   即实现的功能不同
         
回复 使用道具 举报
类的介绍
类的基本组成要有属性 和 功能
属性就是成员变量   功能就是成员方法

一个完整类的几要素
student 类为例
1  成员变量  一般定义为private
    eg:  private String name
             private int age;
2   构造方法
  构造方法:  1. 访问修饰符 public修饰
                     2.  方法名与类名相同
   构造方法参数 可以是  无参   有参  全参                  
      public  Student(){

     }
这里this解决了成员变量与局部变量同名的冲突
                   this指当前调用此方法的对象
                  附注1 : this存活在对象中  不是类中  所以当方法用static修饰 要注意是不能用this的
                   附注2:  this()和super()这两个方法在构造方法中不能同时使用    因为super()r和this()             都要在方法的第一行被调用

                  附注3: super()方法在构造方法中是默认被调用  如若被this()方法取代   说明this()方法里一定实现了对父类构造方法的调用
     public Student(String name){
           this.name = name;
      }
      public  Student(String name, int age){
            this.name = name;
            this.age = age;
      }   
3.   get 和 set 方法
通过创建set和get方法 可以实现变量的私有化  将set get方法设为公有做为用户方位私有变量的接口   实现类的封装
      public void setName(String name){
              this.name = name;
}
     public  String getName(){
              return  name;
}

4   成员方法
    类本身具有的功能 这里的学生功能可以做一个学习功能
    public study(){
      System.out.println("学生在学习");
}
回复 使用道具 举报
ArrayList

数组存储任意类型(基本类型和引用类型)
集合只存储引用类型  存储基本类型会自动装箱 封箱
Collection --》 List--》
                                     1 ArrayList     底层为数组结构   查询慢  增删慢   数组中允许有重复对象
                                     2 LinkedList   底层为链式结构   查询慢  增删快
                                     3 Vector         类同ArrayList   只不过ArrayList 非线程安全  Vector线程安全
                           
                                     ArrayList的遍历
                                     Iterator it = list.iterator();
                                     while(it.hasNext){
                                                   System.out.println(it.next());
                                      }
                                      for(int i = 0; i < list.size() i++){
                                              System.out.println(list.get9(i));
                                       }

                --》  Set       Set是在HashMap的基础上实现的   以Map的key作为对应的存储项  存储数值不允许重复
                                        1. HashSet  存储元素唯一 、无序、 不重复
                                        2.LinkedHashSet  HsahSet的子类   存储元素唯一、 有序 、不重复
                                ================================================
                                  HashSet的遍历
                                     while(it.hasNext){
                                                   System.out.println(it.next());
                                      }

                          Map  
                                      1.HashMap 以键值对的形式存储 (key,value)
                                      ======================================
                                      HashMap的遍历
                                     1 Set<String> set =  map.keySet()
                                       Iterator it =  set.iterator();
                                       while(it.hasNext){
                                                 String key = it.next();
                                                System.out.println(map.get(key));
                                           }

                                          2 Set<Map.Entry<String,String>> entrySet = Map.entrySet();
                                              Iterator<Map.entry<String,String>> entry = entrySet.iterator();
                                              while(entry.hasNext()){
                                                         String key = entry.next().getKey();
                                                         String value = entry.next().getValue();
                                               }
                                            3
                                              for(Map.Entry<String,String> entry : entrySet){
                                                           String key =  entrySet.getKey();
                                                           String value = entrySet.getValue();
                                            }

                                      
回复 使用道具 举报
IO流
字符流
输入流 文件不存在 会异常报错
FileReader fr = new FileReader(fileName);
输出流  如果文件不存在  会自动创建
FileWriter fw = new FileWriter(fileName);
1字符读取  或者  2 字符数组读取
1   int ch;
   while((ch = fr.read()) != -1){
             fw.write(ch);
             fw.flush();
}
    fr.close();
    fw.close();
2   char[] chs = new char[1024];
    while((chs = fr.read(chs)) != -1){
             fw.write(chs,0,len);
              fw.fiush();
}  
       fr.close();
       fw.close();
====================================================================================
高效流 /缓冲流
BufferedReader  br = new BufferedReader(new FileReader(fileName));
BufferedWriter bw  = new BufferedWriter(new FileWriter(fileName));

String str;
while((str = br.readLine()) != null){
           bw.writer(str);
           bw.newLine();
           bw.fiush();
}
          br.close();
          br.close();

回复 使用道具 举报
基础班要学这么多吗,感觉难不难
回复 使用道具 举报
楼主,javaee基础班只学两周就结束了吗?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
支持露珠。。
回复 使用道具 举报
继承
        定义一个类B时,发现已有类A与要定义的类B相似,并且类B属于类A的一种时,可以将类B定义为类A的子类。
        当多个类有着共性内容,可以将共性内容向上抽取,抽取到一个新的类中,这个新类和多个类形成一个关系叫做继承。
        子类继承父类后,自动拥有父类所有可继承的属性和功能。
       
        注意事项
                java只支持单继承,不支持多继承,支持多层继承。(后面的接口可以多继承)
                所有的类都直接或者间接继承了Object类,Object类没有父类
                构造方法不能被继承
方法重写
        当子类继承父类后,自动拥有父类所有可继承的属性和功能。但是子类觉得父类方法不够强大时,可以对父类方法按照自身逻辑
        进行重写。 也叫方法复写,方法覆盖。

        注意事项
                1.可以使用@override检验是否为方法重写
                2.子类方法权限必须大于等于父类方法权限
                3.推荐和父类方法一样
this:本类对象的引用
super:本类对象中父类的引用

this和super
        this.属性名                访问本类成员变量
        this.方法名(参数)        访问本类其他方法
        this(参数)                访问本类其他构造方法(注意必须在构造方法第一行使用)(了解即可)

        super.属性名                访问父类成员变量(非私有)
        super.方法名(参数)        访问父类成员方法(非私有)
        super(参数)                访问父类构造方法(非私有)(注意必须在构造方法的第一行使用)

        注意:
                this和super调用构造方法时不可以在同一个构造方法中同时使用,因为都需要定义在第一行。
                调用构造方法时,必须要保证有这个构造方法才能够调用,如果没有这个构造方法则不能调用


抽象类
        抽象方法:没有方法体的方法叫做抽象方法
        抽象类:有抽象方法的类必须是抽象类

        抽象类的使用
                1.抽象类不能创建对象
                2.定义子类继承抽象类
                3.子类重写父类方法
                4.创建子类对象 调用方法
        抽象类细节:
                1.抽象类可以没有抽象方法
                2.抽象类可以有具体的方法
                3.抽象类必须是一个父类
                4.子类必须重写所有抽象方法,否则子类也是一个抽象类
                5.抽象类有构造方法,子类需要使用构造方法为成员变量赋值
        抽象类出现的意义
                抽象类定义了一类事物最基本的属性和行为。强制子类必须实现其功能。子类必须重写其抽象方法
       
回复 使用道具 举报
接口
        (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口。接口是功能的集合 接口不能创建对象
        (2)格式:
                父接口:
                        public interface Inter
                        {
                       
                        }

                子类:
                        public class InterImpl implements Inter
                        {
                       
                        }
        (3)接口的特点:
                A:不需要被abstract修饰。
                B:类实现接口,可以单实现,还可以多实现。
                C:接口可以继承接口,可以单继承,也可以多继承
                D:接口与父类的功能可以重复,均代表要具备某种功能。
        (4)抽象类和接口的区别:
                A:成员的区别
                        抽象类
                                成员变量:可以是变量,也可以是常量。
                                构造方法:有构造方法,用于子类实例化使用。
                                成员方法:可以是抽象的,也可以是非抽象的。

                        接口
                                成员变量:只能是常量。
                                          默认修饰符:public static final
                                成员方法:只能是抽象的。
                                          默认修饰符:public abstract

                                推荐:默认修饰符请自己永远手动给出。

                B:类和接口的关系区别
                        类与类:
                                继承关系,只能单继承。可以多层继承。

                        类与接口:
                                实现关系,可以单实现,也可以多实现。
                                类还可以在继承一个类的同时实现多个接口。

                        接口与接口:
                                继承关系,可以单继承,也可以多继承。

                C:体现的理念不同
                        抽象类里面定义的都是一个继承体系中的共性内容。
                               
                        接口是功能的集合,是一个体系额外的功能,是暴露出来的规则。
                               

多态
        (1)同一个对象,在不同时刻表现出来的不同状态。
                举例:水(水,冰,水蒸气)
                      猫(猫,动物)
                       
        (2)前提:
                A:有继承或者实现关系。
                B:有方法的重写。
                C:有父类(接口)的引用指向子类对象。
        (3)多态中的成员使用特点:
                Fu fz = new Zi();
                多态时,所有表现形式都是父类的表现形式,
                只有调用方法时,运行的是子类重写的方法
                A:成员变量
                        编译看左边,运行看左边。
                B:成员方法
                        编译看左边,运行看右边。

                 class Fu {
                        int num=4;
                        void show() {
                                System.out.println("showFu");
                        }
                }
                class Zi extends Fu {
                        int num=5;
                        void show() {
                                System.out.println("showZi");
                        }
                }
                class T {
                        public static void main(String[] args) {
                                Fu f=new Zi();
                                System.out.println(f.num);  
                                f.show();       
                               
                        }

        (4)多态中的转型:
                A:向上转型
                        把子类对象赋值给父类(接口)的引用  自动类型提升  int a = 0;  double b =a;

                        Fu fz = new Zi();
                B:向下转型
                        把父类(接口)的引用强制转换成子类对象
                        double b = 10.0;
                        int a = (int)b;

                        Fu  fz = new Zi();
                        Zi  zf = (Zi)fz;

                        注意:Fu fu = new Fu() 不能向下转型  会报ClassCastException 类型转换异常


        (5)多态的好处及弊端:
                A:好处
                        提高了程序可维护下和可扩展性。
                       
                B:弊端
                        不能使用子类特有内容。
                        要想使用,要么向下转型,要么重新创建子类对象。
        (6)多态的三种形式:
                A:具体的类多态   父类  变量名 = new  子类();
                B:抽象类多态     父抽象类  变量名 = new 子类();
                C:接口多态       接口  变量名  =  new 实现类();
        instanceof 关键字
                格式: 对象名 instanceof 类名
                返回值: true, false
                作用: 判断指定的对象 是否为 给定类创建的对象

                Animal  a1 = new Cat();

                Animal  a2 = new Dog();

                method(a1)


                public  static void method(Animal  a){
                        if(a instanceof Cat){
                                向下转型
                                调用猫特有方法
                        }
               
                }
回复 使用道具 举报
final:
        final是最终修饰符,可以修饰成员方法变量
        final修饰的类无法被继承。
        final修饰的方法无法被重写。
        final修饰的变量无法被再次赋值,变为了常量。

        final修饰的引用数据类型变量,可以修改对象里面的属性内容,不可改变地址值
        final修饰的成员变量,不能使用默认值,没有意义,必须在创建对象之前完成赋值。
        可以显示赋值,可以在构造方法中赋值。
        显示赋值: final int a = 10;
        构造方法赋值:
              class Person{
                          final int a;
                          public Person{
                                 a 10;
                         }
             }
       
static:
        静态修饰符,被static修饰的内容属于类不专属于某个对象,多个对象共享使用这一个成员
        使用static修饰的成员可以用类名直接访问,建议这样使用:
                类名.静态方法名(参数);
                类名.静态常量名;
        静态修饰的成员只能直接访问静态修饰的成员,不能出现this、super,因为类是优于对象产生
        (再次强调: this super只是存在于对象当中
                             this是当前对象的引用  谁调用 this指向谁)

               
内部类的概念:定义在一个类的内部的一个类叫内部类   分为:成员内部类与局部内部类
匿名内部类:
        是局部内部类的一种
        匿名内部类完成两件事:
                1:定义了一个类型的匿名子类
                2:定义类后,即刻创建了该类对象
       
        目的:为了创建某个类的子类对象
        格式:new 父类/接口() {
                        重写方法
                };
       
包:软件组织文件的基本方式,用于将相同功能的类放到同一个包下,方便管理
  在类的最前边使用package定义类所在包,注意:声明的package包必须与这个文件所在的文件夹一致
包的访问:(前提 类用public修饰)
        同一个包下,随意访问
        不同包下:
                可以直接使用全名使用
                为了方便,可以选择导包后,再直接使用类名本身,不加包名  在package后,class前使用import导入类
                如果是lang包下的类,可以不导包,直接使用

代码块:一块执行代码的区域
       局部代码块: 主要用于限定变量的作用范围
        构造代码块(又叫成员代码块):每次创建对象调用
        静态代码块:第一次创建对象调用,再创建其他对象时不再重复调用
                            第一次访问静态成员 也会调用
                           类第一次加载时会调用,只会调用一次。
       即  静态代码块只会在类加载时执行一次  其他时候不会再被调用
     执行顺序 (静态代码块  成员代码块 构造方法)
        静态代码块 > 成员代码块  > 构造方法        


回复 使用道具 举报
newu 黑马帝 2017-4-19 11:46:05
20#
方法、,不错,真是太棒了!
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马