JAVA(3)
接口注意事项:
1.接口不能被实例化
2.接口中所有的方法都不能有主体 (不能有{ })
3.一个类可以实现多个接口
4.接口中可以有变量<但变量不能用private和protected修饰>
附加:
接口中的变量,本质上都是static的,而且是final,不管加不加static修饰
在java开发中,常把经常用的变量定义在接口中,作为全局变量使用。
<访问形式:接口名.变量名>
5.一个接口不能继承其他的类,但是可以继承别的接口
抽象类中可以有实现了的方法
接口中的方法一个都不能被实现
接口中定义变量有特殊要求
接口语法:
class 类名 implement 接口 {
方法;
变量;
}
小结:
接口是更加抽象的抽象的类
抽象类里的方法可以有方法体
接口里的所有方法都没有方法体
接口体现了程序设计的多态和高内聚低耦合的设计思想
package com.test4;
public class Test{ public static void main(String[] args){ }
}
interface Fish
{
public void swimming();
}
interface Bird
{
public void fly();
}
class Monkey
{
int name;
public void jump()
{
System.out.println("ABC");
}
}
class LittleMonkey extends Monkey implement Fish,Bird
{
public void swimming(){
}
public void fly(){
}
}
java的继承是单继承(一个类最多只能有一个父类)
final-概念
final可以修饰变量或方
使用final可以避免被子类修改:
class Aaa
{
//给方法用final修饰,表示不可以被修改,不可被覆盖
final public void sendMes()
{
System.out.println("发送消息");
}
}
final使用:
1.当不希望父类的某个方法被子类覆盖(override)时,使用final关键字修饰
2.当不希望类的某个变量的值被修改,可以用final修饰 <final public void xxx()>
如果一个变量是final,则必须赋初值,否则编译不了
3.当不希望类被继承时,可用final修饰 <final class xxx>
数组
一维数组
数组的必要性:
package com.test1;
public class Demo5_1{ public static void main(String[] args){
//定义六个变量
//定义一个可以存放六个float类型的数组
float arr[]=new float[6];
//使用for循环赋值
//给数组的各个元素赋值
arr[0]=3;
arr[1]=5;
arr[2]=3.4f;
arr[3]=2;
arr[4]=50; //算总体重[遍历数组]
float all=0;
for(int i=0;i<6;i++)
{
all+=arr[i];
}
System.out.println("总体重是:"+all);
}
}
对象数组的使用:
package com.test1;
import java.io.*;
public class Demo5_2{
public static void main(String[] args){ //定义一个可以存放四只狗的对象数组
Dog dog[]=new Dog[4]; //给各个狗赋初值 //从控制台输入每个狗的信息[alt+j]快捷键
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
for(int i=0;i<4;i++)
{
dog[i]=new Dog();
System.out.println("请输入狗名");
//从控制台读取狗名
String name=br.readLine();
//将名字赋给对象
dogs[i].setName(name);
System.out.println("");
String s_weight=br.readLine();
float weight=Float.parseFloat(s_weight);
//将名字赋给对象
dog[i].setWeight(weight);
}
//计算平均体重
//计算总体重
for(int i=0;i<4;i++)
{
allWeight+=dogs[i].getWeight();
}
//计算平均体重
float avgWeight/dogs.length;
System.out.println("总体重="+allWeight+"平均="+avgWeight)
}
}
//定义一个狗类
class Dog
{
private String name;
private float weight;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public float getWeight(){
return weight;
}
public void setWeight(float weight){
this.age=weight;
} }
排序分类:
1、内部排序:
(交换式排序法、选择式排序法、插入式排序法)
2、外部排序法:
(合并排序法、直接合并排序法)
交换式排序法:冒泡排序法、快速排序法
冒泡排序:
package com.test1;
public class Demo5_3{
public static void main(String[] args){ int arr[]={1,6,0,-1,9};
//排序
//外层循环,它决定一共走几趟
for(int i=0;i<arr.length-1;i++)
{
//内层循环,逐个比较,若前大于后则交换
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
//换位
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//输出最后结果
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+"");
} 排序方法封装到类中:
class Bubble{ //排序方法
public void sort(int arr[])
{
int temp=0;
for(int i=0;i<arr.length-1;i++)
{
for(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
调用:Bubble bubble=new Bubble();
bubble.sort(arr);
选择排序法:
class Select
{
//选择排序
public void sort(int arr[])
{
//默认第一个数最小 for(int j=0;j<arr.length-1;j++)
{
int min=arr[j];
//记录最小数下标
int minIndxe=j;
for(int k=j+1;k<arr.length;k++)
{
if(min>arr[k])
{
//修改最小
min=arr[k];
minIndxe=k;
}
}
}
插入式排序
将n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中有n-1个元素
class InsertSort
{
//插入排序方法
public void sort(int arr[])
{
for(int i=1;i<arr.length;i++)
{
int insertVal=arr[i];
//insertVal准备和前一个数比较
int index=i-1;
while(index>=0&&insertVal<arr[index]) //将arr[index]向后移动
arr[index+1]=arr[index];
//让index向前移动
index--;
}
//将insertVal插入到适当位置
arr[index+1]=insertVal;
}
}
多维数组
定义:
类型 数组名[][]=new 类型[大小][大小]
package com.test1;
public class Demo5_5{ public static void main(String[] args) int a[][]=new int[4][6]; a[1][2]=1;
a[2][1]=2;
a[2][3]=3; //将图形输出
for(int i=0;i<4;i++)
{
for(int j=0;j<6;j++)
{
System.out.print(a[j]+"");
}
//换行
System.out.println(); }
}
二进制(原码、反码、补码):
1、二进制的最高位是符号位:0表示正数,1表示负数
2、正数的原码、反码、补码都一样
3、负数的反码=符号位不变,其他位取反
4、负数的补码=他的反码+1
5、0的反码、补码都是0
6、java没有无符号数
7、在计算机运算时候,都是以补码的方式来运算的
算数右移:地位溢出,符号位不变,并用符号位补溢出的高位
算数左移:符号位不变,低位补0
集合:
java集合类主要有以下几种:
1、List结构的集合类
ArrayList类,LinkedList类,Vector类,Stack类
2、Map结构的集合类
HashMap类,Hashtable类
3、Set结构的集合类
HashSet类,TreeSet类
4、Queue结构的集合
Queue接口
java集合的用法:
package com.test1;
import java.util.*;
public class Demo7{
public static void main(String[] args){ //定义ArrayList对象
ArrayList a1=new ArrayList();
//显示大小
System.out.println("al大小:"al.size());
}
}
JAVA(3)的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- 读javascript高级程序设计17-在线检测,cookie,子cookie
一.在线状态检测 开发离线应用时,往往在离线状态时把数据存在本地,而在联机状态时再把数据发送到服务器.html5提供了检测在线状态的方法:navigator.onLine和online/offline ...
- Mongodb 副本集分片(一)---初始化mongodb安装启动
写在前面:mongodb是nosql非关系型数据库中,比较受欢迎的产品.在数据持久化及与关系型数据库的关联上也做的比较好,目前各大公司在存放二进制文件(图片.视频等)中应用也比较广泛.其遵循的key- ...
- vue-todolist
look:先看效果: 在浏览器的地址输入localhost:8080时,页面展示的是coding和walking两个无序序列,接着在输入框输入任何字符再敲enter回车键时,列表中又增加了一列,但是只 ...
- Node.js EventEmitter(事件队列)
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.read ...
- java selenium (十) 操作浏览器
本篇文章介绍selenium 操作浏览器 阅读目录 浏览器最大化 前进,后退, 刷新 public static void testBrowser(WebDriver driver) throws E ...
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(六)
前言 在接下来的篇幅里将对系统的模块功能进行编写.主要以代码实现为主.这一篇我们需要完成系统模块“角色管理”的相关功能.完成后可以对系统框架结构有进一步了解. Abstract层 之前说过,Abstr ...
- bzoj2006: [NOI2010]超级钢琴
题意:给一个序列(n<=500000),要求选定k个不同区间,使得区间长度在L,R之间,并使得k个区间和之和最大,输出这个最大值. 刚拿到题的时候想的是,对于每个点,如果以它开头,那么之后的L- ...
- 【流程管理】【PCB】PCB设计流程
添加封装 封装库用官方库,如没有添加补丁库,用原库或其他库中元件复制修改 调用封装时可先放置到PCB里进行测量 3D模型添加网站 封装库分类按厂商分类,常用器件按器件类型分类, 命名使用规范 导入PC ...
- Java基本
定义类的方法 class 类名{ 属性; 方法; } 属性也叫成员变量,主要用于描述累的状态方法也叫成员方法,主要用于描述类的行为 class Person{ int age; void show() ...
- 【转】javascript打印设置
页面中的代码:<OBJECT id="WebBrowser1" height="0" width="0" classid ...