来到广州实习的第二天,广州好潮湿,这就是我的感觉,手表里面都开始产生了水雾,这就尴尬了、、、每天不断的雨。好吧,尽管我很喜欢这里的树,但是我以后应该也不会再来广州了,其实也说不准。想起了《谁动了我的奶酪》里面的一句话:生活并不会遵从某个人的愿望发展。改变随时有可能降临,但积极地面对改变却会让你发现更好的奶酪,真的是塞翁失马,焉知非福。 我会依旧乐观地面对!

相关链接:

JAVA中文API文档

JAVA知识点文章

Java面向对象,继承,多态,接口,abstract类,instanceof运算符,集合类(Map,Set,List)


实例一:继承

ExtendsDemo.java
 package com.lanou.two;

     //创建一个Person类作为父类,定义一些相同的属性和行为
//创建两个子类Employ,Student
class Person5{
String name;
private String gender ="girl";
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
} int age;
public void eat() {
System.out.println("eating...");
}
public void sleep() {
System.out.println("sleeping...");
}
public void sayHello() {
System.out.println("Hi...");
} public Person5(String name,int age) {
this.name=name;
this.age =age;
}
} class Employe extends Person5 { public Employe(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void sayHello() {
System.out.println("Hi... worker");
}
public void work() {
System.out.println("working...");
}
} class Student extends Person5{ public Student(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void sayHello() {
System.out.println("Hi...Student");
}
public void study() {
System.out.println("studying...");
}
}
/*
* private 修饰的不能被继承访问,子类可以用set,get方法进行访问,在父类里面生成相应属性的set,get方法
*
* 继承:提高代码的复用性,避免重复代码出现
*
* Java不支持多继承,多继承需要使用接口
*
* */ public class ExtendsDemo {
public static void main(String[] args) {
Student student = new Student("Alice",22);
System.out.println(student.getGender());
student.sayHello();
student.study(); } }

实例二:Abstract

 package com.lanou.two;

 public class AbstractDemo {

     public static void main(String[] args) {
Wolf wolf = new Wolf();
wolf.bark();
wolf.sleep();
}
} abstract class Quanke{
/**
* 没有方法体的方法叫做抽象方法
* 抽象方法所在类也必须抽象,即抽象类
* 关键字abstract, 不能和 private,static,final一起定义
* 抽象类不能被实例化,必须由子类覆盖所有抽象方法才能实例化
* 在抽象类中可以定义非抽象方法
*/
abstract public void bark();
public void sleep() {
System.out.println("sleeping...");
}
} /**
*当一个类继承自一个抽象类的时候,必须要覆盖这个抽象类的所有抽象方法
*否则这个这个子类还是抽象类
*/
class Wolf extends Quanke{ @Override
public void bark() {
System.out.println("ao...wu...");
} }

练习:

 package com.lanou.two;

 public class Test1 {
Programmer p = new Programmer();
} abstract class person1{
public String name;
public int ID;
public int money; abstract public void work(); } class Programmer extends person1{ public void work() {
System.out.println("programming");
} } class Manager extends person1{
public int bonus; @Override
public void work() {
System.out.println("management"); } }

实例三:多态

 package com.lanou.two;

 public class PolymorphsDemo {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
// dog.eat();
// cat.eat();
runEat(dog);
runEat(cat);
//在向下转型之前进行类型判断防止抛出异常
if(cat instanceof Animal){
System.out.println("C is Animal~");
}
}
static public void runEat(Animal an){
an.eat();
}
} /*
* 不同的对象执行会有不同的结果
* 父类的引用指向子类对象,会自动向上转型,转型后该对象将丢失特有的内容
* 在向下转型过程中,如果类型不匹配,会抛出异常
*/ abstract class Animal{
abstract public void eat();
//将父类作为返回值类型时,可返回
public Animal get() {
return new Cat();
};
} class Dog extends Animal{ @Override
public void eat() {
System.out.println("Dogs like eating bones");
} }
class Cat extends Animal{ @Override
public void eat() {
System.out.println("Cats like eating fish");
} }

实例四:

 package com.lanou.two;

 public class InterfaceDemo {
//想使用接口,又不想创建新的类,使用匿名内部类创建时实现方法即可
myInterface in = new ImplememtDemo(){
public void Hello() {
System.out.println("Hi~匿名内部类"); }
};
}
/**
* 定义接口使用interface关键字
* 接口也不能实例化,需要子类实现所有方法才能实例化
* 只能定义常量和抽象方法,可以看作一种特殊的抽象类
* 在接口中定义的成员变量会自动加上public static final
* 接口中不允许存在非抽象方法,编译器会自动加上abstract
* 接口是可以继承的,可以多继承
*/ interface myInterface{
public static final int a =100;
public void Hello();
} interface Inter2{
public void Hello();
} class ImplememtDemo implements myInterface,Inter2{ @Override
public void Hello() {
System.out.println("Hi~");
}
}

练习:

 package com.lanou.two;

 public class Test2 {

     /**
* @param args
*/
public static void main(String[] args) {
PC pc = new PC();
pc.start();
pc.stop();
}
}
class PC{
public void start() {
System.out.println("Computer start~");
}
public void stop() {
System.out.println("Computer stop~");
}
private void addDevice(USB u) {
u.open();
u.close();
}
} interface USB {
public void open();
public void close();
} class Mouse implements USB{ @Override
public void open() {
System.out.println("The Mouse has opened.");
} @Override
public void close() {
System.out.println("The Mouse has closed.");
} }

实例五:

 package com.lanou.two;

 import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator; public class ArrayListDemo { /**
* 在拿到一个框架时,先去看看顶层中的内容
* 然后再去找底层的类来使用
*
* ArrayList的特点:
* 1.可以存储重复对象;
* 2.存储顺序和取出顺序一致;
* 3.长度可变;元素在内存中地址连续,导致查询很快;添加和删除的速度就会变慢
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
//添加数据 基础数据类型在存储到集合中时会自动包装
int i;
Integer a=50;
arrayList.add(1);
arrayList.add(5);
arrayList.add(0, 100);
arrayList.add(1, a);
System.out.println(arrayList); for(i=0;i<arrayList.size();i++){
System.out.print(arrayList.subList(i, i+1)+" ");
}
System.out.println("First");
//获取对象,可以使用get
for(i=0;i<arrayList.size();i++){
System.out.print(arrayList.get(i)+" ");
}
System.out.println("Second");
//获取对象,迭代器 每一个集合类都提供了获取迭代器
Iterator<Integer> it = arrayList.iterator();
while (it.hasNext()) {
//在迭代中不能对集合进行修改
Integer t = it.next();
System.out.print(t+" ");
}
System.out.println("Third"); //如果需要在迭代过程中修改集合,需要用ListIterator
ListIterator<Integer> listit =arrayList.listIterator();
while (listit.hasNext()) {
listit.add(33);
listit.next();
}
System.out.println(arrayList); //删除元素,0表示索引
arrayList.remove(0);
//100已经被封装,不能当作值删除
//arrayList.remove(100);
arrayList.remove(new Integer(50));
System.out.println(arrayList); //删除集合的所有元素,取差集 arraylist.removeAll();
//取交集retainAll(); }
}

个人感觉,学习集合类的话,可以对API进行熟悉了解,包括Java源代码这些。网址:JavaAPI


 

实例六:

 package com.lanou.two;

 import java.util.Iterator;
import java.util.LinkedList; public class LinkedListDemo { /**
* linkedList的特点:
* 1.可以存储重复的元素
* 2.存储顺序与取出顺序一致
* 3.可以存储空值
* 4.可以实现队列和堆栈
*/
public static void main(String[] args) {
LinkedList<String> linked = new LinkedList<String>();
//添加元素
linked.add("Alice");
linked.add(0,"Bob");
linked.addFirst("cindy");
linked.addLast("Grace");
linked.offer("Jim");
linked.offerFirst("Kim");
linked.offer("Mary"); System.out.println(linked); Iterator<String> it = linked.iterator();
while (it.hasNext()) {
//在迭代中不能对集合进行修改
String t = it.next();
System.out.print(t+" ");
}
System.out.println();
//删除元素
linked.remove();
System.out.println(linked); } }

 

实例七:

 package com.lanou.two;

 import java.util.HashSet;
import java.util.Iterator; public class HashSetDemo { /**
* HashSet中的元素存储顺序和取出顺序可能不同,可能相同
* 查找,添加速度快
* 不能存储重复元素
* 当我们存储自定义对象时需要重写hashCode()和equals()
*/
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("AAAA");
set.add("BBBB");
set.add("CCCC");
set.add("DDDD"); Iterator<String> it = set.iterator();
while (it.hasNext()) {
//在迭代中不能对集合进行修改
String t = it.next();
System.out.print(t+" ");
} } }

练习:

 package com.lanou.two;

 import java.util.HashSet;
import java.util.Set; public class Test3 { /**
* @param args
*/
public static void main(String[] args) {
HashSet<People> set = new HashSet<People>();
set.add(new People("Alice",22));
set.add(new People("Alice",21));
set.add(new People("Bob",22));
System.out.println(set);
}
} class People{
String name;
int age; @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
People other = (People) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public People(String name,int age) {
super();
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "name:"+name+" age:"+age;
} }

Tip:

当发现项目中有什么小错误,然后自己又察觉不出来的话,可以试下如下操作:

找到Project

结束~

明天开始项目的部署,继续努力~

Java基础语法实例(2)——实习第二天的更多相关文章

  1. Java基础语法实例(1)——实习第一天

    来到广州实习的第一天,我选择的是JavaEE,因为以后的方向是Java,所以就选择了它.感觉有一段时间没有接触Java了.趁此机会好好努力,将基础巩固好. Java输入及循环,判断,字符转换,数组定义 ...

  2. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  3. Java基础语法入门01

    Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...

  4. 第3天 Java基础语法

    第3天 Java基础语法 今日内容介绍 引用数据数据类型(Scanner.Random) 流程控制语句(if.for.while.dowhile.break.continue) 引用数据类型 Scan ...

  5. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  6. Java基础语法知识你真的都会吗?

    第一阶段 JAVA基础知识 第二章 Java基础语法知识 在我们开始讲解程序之前,命名规范是我们不得不提的一个话题,虽说命名本应该是自由的,但是仍然有一定的"潜规则",通过你对命名 ...

  7. Java基础语法与流程控制

    Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...

  8. Java基础语法(下篇)

     Java基础语法(下篇) 内容概要:        (1)函数的定义        (2)函数的特点        (3)函数的应用        (4)函数的重载               ...

  9. Java基础语法(上篇)

                     Java基础语法(上篇) 知识概要: (1)关键字的表示与规范       (2)标示符              (3)注释                (4 ...

随机推荐

  1. C++随机数rand(), srand()

    c++产生随机数会用到rand(), srand()函数,下面总结两个函数特性和使用. 1. rand() #include <iostream> #include <cstdlib ...

  2. [C#学习]0.发表之前想说的

    在这里我将学习C#编程,首先我也只是一个初学者,只是为了以后的学习,并且方便复习,所以决定在这里记录总结一些知识,简单的写一个教程.所以在这里或许难免有一些错误,欢迎大家指出,一起进步. 在这里我使用 ...

  3. 实现sticky footer的五种方法

    2017-04-19 16:24:48 什么是sticky footer 如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内容向下推送. 用position实现? 如果是用 ...

  4. Vue项目的部署

    通过vue-cli创建的工程,默认已经打好了基础,包含vue-loader webpack. 通常我们开发中,使用npm run dev进行开发,webpack会Hot reload,不用我们手动刷新 ...

  5. Hadoop技术在商业智能BI中的应用

    Hadoop是个很流行的分布式计算解决方案,是Apache的一个开源项目名称,核心部分包括HDFS及MapReduce.其中,HDFS是分布式文件系统,MapReduce是分布式计算引擎.时至今日,H ...

  6. JavaScript开发中几个常用知识点总结

    最近在做项目的时候自己写了一些JavaScipt代码,于是自己又进行简单的查阅资料整理了一下,发现了如下几个比较有用的知识点: 1.三种声明函数的方式 2.jQuery $(document).rea ...

  7. Maven学习-构建项目

    创建项目 运行如下命令会创建一个简单的Maven项目. mvn archetype:create -DgroupId=com.netease.learn -DartifactId=simple -Dp ...

  8. Scala基础 - 下划线使用指南

    下划线这个符号几乎贯穿了任何一本Scala编程书籍,并且在不同的场景下具有不同的含义,绕晕了不少初学者.正因如此,下划线这个特殊符号无形中增加Scala的入门难度.本文希望帮助初学者踏平这个小山坡. ...

  9. gitignore.io-程序猿值得拥有的智能生成gitignore文件的秘密武器

    gitignore.io Create useful .gitignore files for your project by selecting from 360 Operating System, ...

  10. python 计算两个日期相差多少个月

    近期,由于业务需要计算两个日期之前相差多少个月.我在网上找了很久,结果发现万能的python,居然没有一个模块计算两个日期的月数,像Java.C#之类的高级语言,都会有(date1-date2).mo ...