接口注意事项:

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)的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. 原生js通过prottype写的一个简单拖拽

    <!DOCTYPE html> <head> <meta charset="utf-8"/> <title></title&g ...

  2. Xcode真机调试出现The account '***' has no team with ID '***'的解决方案

    前段时间,想用真机调试的时候出现 The account '***' has no team with ID '***'的问题, 以前页真机调试过,没有这种情况,于是我登陆开发者中心,进去发现说我的账 ...

  3. jqueryGannt用法

    jqueryGannt主要用于甘特图的展示,直接上步骤 1.下载 jquery.min.js js/jquery.fn.gantt.js 的js ,可以自己去github上搜官方的. 其他的要上传对应 ...

  4. The different of mouseover and mouseenter

    l论事件onmouseover 和 onmouseenter:同类比较onmouseout 和 onmouseleave; 使用onmouseover时,鼠标除了被设置事件的元素,还会触发其子元素: ...

  5. z-index 可以使用负值,CSS相对定位、绝对定位利器

    很多技巧都是在工作中测试出来的,我搞DIV+CSS前端开发,现在是安卓收藏家,日常也有很多技巧,刚刚突然发现的这个技巧,真的很实用:Z-index值可以使用负值. z-index是个很强大的属性,是个 ...

  6. LoadRunner录制一个登录

    1.点击录制脚本 2.点击左边页面加号

  7. __attribute__((packed))作用

    1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法.这个功能是跟操作系统没关系,跟编译器有关,g ...

  8. iOS 页面显示在键盘之上

    美丽又可爱的UED妹子文晓的给我提了一个问题,就是在键盘升起的时候,添加的加载页面(loading)被键盘挡住了. 看到问题之后我就想到了问题的所在,因为以前我可敬可爱的领导给我们科普过,说UIAla ...

  9. 我创建了一个网站,专门分享公众号的文章 https://asyons.com

    网址:https://asyons.com/,为做个网站,自娱自乐的自明星,但投资也挺大的了,注册了一家公司,公财私章,做账报税,阿里云服务器,全职开发.算上时间价值,按小时,投资过5万了.

  10. c/c++面试题(9)linux方向

    1.简述用虚函数实现的多态的原理: 编译器发现一个类中有虚函数的时候,便会立即为此类生成虚函数表vtable.虚函数表的各 表项为指向对应虚函数的指针.编译器还会在此类中隐含插入一个指针vptr(对v ...