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 ...
随机推荐
- angularjs jsonp跨域
<script> (function(angular){ "use strict" var app= angular.module('appController',[] ...
- Java中实现String.padLeft和String.padRight
因为习惯了C#中的padLeft和padRight,接触Java后突然失去这两个功能,觉得别扭,就试着实现了这两个方法. Java中String.format()中带有字符串对齐功能如下: Syste ...
- ASP.NET MVC, Url长度过长问题解决,404.15问题
最近在处理一个问题的时候,发现他们存在一个大量数据放在URL中传递的过程,当数据达到一定数量的时候就会报出404.15问题. 运行环境是在IIS8,经过查询之后发现,URL此时最大长度为2048,肯定 ...
- Oracle正则表达式之匹配邮箱
利于正则表达式匹配出符合电子邮箱的数据 --1 表准备create table test_regexp( object varchar2(50)); --2 数据准备 insert into test ...
- iOS开发之判断用户是否打开APP通知开关
一.前言 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是 ...
- 通过js给网页加上水印背景
有些后端管理系统,因为业务逻辑的需要,需要加上水印,下面就是水印方法. function watermark(settings) { debugger; //默认设置 var defaultSetti ...
- gitignore.io-程序猿值得拥有的智能生成gitignore文件的秘密武器
gitignore.io Create useful .gitignore files for your project by selecting from 360 Operating System, ...
- trap-接收信号_采取行动
trap命令用于指定在接收到信号后将要采取的动作,常见的用途是在脚本程序被中断时完成清理工作. kill和trap等都可以看到信号编号及其关联的名称. "信号"是指那些被异步发送到 ...
- 项目中的报错信息,maven报错等的总结
Maven是一个自动化的构建和管理工具.在项目开发中,如果遇到了错误(红叉),一般有如下的解决方法: 1.java.lang.UnsatisfiedLinkError: E:\apache-tomca ...
- 物理CPU 逻辑CPU 核数
一.概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU ③ CPU核数 一块CPU上面能处理数据的芯片组的数量 ...