Java基础语法实例(2)——实习第二天
来到广州实习的第二天,广州好潮湿,这就是我的感觉,手表里面都开始产生了水雾,这就尴尬了、、、每天不断的雨。好吧,尽管我很喜欢这里的树,但是我以后应该也不会再来广州了,其实也说不准。想起了《谁动了我的奶酪》里面的一句话:生活并不会遵从某个人的愿望发展。改变随时有可能降临,但积极地面对改变却会让你发现更好的奶酪,真的是塞翁失马,焉知非福。 我会依旧乐观地面对!
相关链接:
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)——实习第二天的更多相关文章
- Java基础语法实例(1)——实习第一天
来到广州实习的第一天,我选择的是JavaEE,因为以后的方向是Java,所以就选择了它.感觉有一段时间没有接触Java了.趁此机会好好努力,将基础巩固好. Java输入及循环,判断,字符转换,数组定义 ...
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- Java基础语法入门01
Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...
- 第3天 Java基础语法
第3天 Java基础语法 今日内容介绍 引用数据数据类型(Scanner.Random) 流程控制语句(if.for.while.dowhile.break.continue) 引用数据类型 Scan ...
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...
- Java基础语法知识你真的都会吗?
第一阶段 JAVA基础知识 第二章 Java基础语法知识 在我们开始讲解程序之前,命名规范是我们不得不提的一个话题,虽说命名本应该是自由的,但是仍然有一定的"潜规则",通过你对命名 ...
- Java基础语法与流程控制
Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...
- Java基础语法(下篇)
Java基础语法(下篇) 内容概要: (1)函数的定义 (2)函数的特点 (3)函数的应用 (4)函数的重载 ...
- Java基础语法(上篇)
Java基础语法(上篇) 知识概要: (1)关键字的表示与规范 (2)标示符 (3)注释 (4 ...
随机推荐
- php中表单提交复选框与下拉列表项
在赶项目中,抽出半个小时来写篇博客吧,这个功能说实话不难,为什么要写呢,因为在复选框那里有小小的难点,我试了好多遍才试成功的,希望能为以后需要帮助的同学提供点思路. 先看一下我做的效果吧 就是给每个业 ...
- luogu P1007 独木桥
序:难度标签是普及-,便觉得应该非常简单,结果发现有一个弯半天没绕过来,所以认为这道题对于第一次做的人来讲还是很是比较有意义的. 题目描述: 长度为len的桥上有n个士兵,你不知道他们的初始方向.已知 ...
- Google的PageRank及其Map-reduce应用(日志五)
上一篇:Hadoop的安装(日志四) 1,算法的原理解释: 如下图所示,G就是传说中的谷歌矩阵,这个矩阵是n*n型号的,n表示共计有n个网页. 如矩阵中所示: 11位置处的元素,是表示第一个网页指向的 ...
- ASP.NET Core实现类库项目读取配置文件
前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...
- Jenkins+Tomcat+svn+maven自动化构建简单过程
搭建好jenkins自动化构建之后,点击立即构建,即可将svn服务器上的源码自动编译构建,并打成war包,然后将这个war包以及编译好的项目复制到指定服务器的tomcat容器里,当svn服务器的代码有 ...
- js中new一个对象的过程
使用new关键字调用函数(new ClassA(-))的具体步骤: 1. 创建空对象{}: 2. 设置新对象的constructor属性为构造函数的名称,设置新对象的__proto__属性指向构造函数 ...
- 初码-Azure系列-迁移PHP应用至Azure的一些实践记录和思考
最近客户在逐步迁移应用从阿里云到Azure,这次又轮到一个PHP+MySQL应用了,顺便也记一下流水账. 需求:迁移部署在阿里云上的ECS服务器(系列2,IO优化+2核4G+50G的SSD云盘+10M ...
- 树莓派安装FLASK服务;并在端网页读取 GPIO状态和系统时间
做过一些物联网的作品:因为不想一直做APP来控制,因为不能每个人都去下载你自己做的APP,浏览器大家都是有的:那么每个人通过浏览器WEB来访问我们服务器,岂不是很简单和方便,采用flask+pytho ...
- Weighted Effect Coding: Dummy coding when size matters
If your regression model contains a categorical predictor variable, you commonly test the significan ...
- 深度解析PHP数组函数array_chunk
array_chunk是PHP中的一个数组分割函数,是将一个数组分割为多个数组块 我们可以把它理解卖豆腐的商人把一整块大豆腐切割为一个一个的小块来进行售卖 这个函数需要三个参数: 被切割的数组(必需) ...