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#多用于业务系统的开发 ...
随机推荐
- C#中timer类的用法
C#中timer类的用法 关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类 ...
- oracle initialization or shutdown in progress解决方法
[解决方法] SQL> connect sys/hope as sysdba 已连接. SQL> shutdown normal ORA-01109: 数据库未打开 已经卸载数 ...
- SQL server同时删除多个表
) while exists (select name from sys.tables where name like 'se_%') begin @varname = name from sys.t ...
- CSS基础3
1.变形样式 transform : none | <transform-function>,改变元素的大小,透明,旋转角度,扭曲度等.<transform-function> ...
- C#最齐全的上传图片方法。
public ActionResult Upload() { string imgurl = ""; foreach (string key in Request.Files) { ...
- Maven的配置
- RHEL 6.5 PXE 安装调试 VMWARE ESXi 5.1 安装
测试环境:win10/vmware workstation 12 pro 操作系统:RHEL 6.5(PXE服务器) [2016.11.30] [遗留问题] 1.ks.cfg通过本地文件方式加载不成功 ...
- 建设商城网站ecshop如何开启伪静态
ecshop是国内一款比较流行的商城网站建设系统,它拥有比较完善的电子商务交易流程,其使用PHP+网站建设者的喜爱. 商城网站也需要网站优化,开启伪静态是个比较好的方法. ECSHOP的伪静态 ...
- vpn是什么?手机vpn是什么?
vpn是什么?手机vpn是什么? vpn是什么?手机vpn是什么? vpn是什么?手机vpn是什么?VPN全称是Virtual Private Network,也就是虚拟专用网的意思.很多人不知道VP ...
- DataStructure——红黑树学习笔记
1.前言 本文伪码和解释参考: http://blog.csdn.net/v_JULY_v/article/details/6105630 C实现的源码本文未贴出,请见: http://blog.cs ...