Java基础总结2

Java基础总结2

  • 数组

格式1:

元素类型 [] 数组名 = new 元素类型 [元素个数或数组长度]

示例:int [] arr = new int [5]

格式2:

元素类型 [] 数组名 = new 元素类型 [] {元素、元素、元素………..}

示例:int [] arr = new int [5] {1,2,3,4,5}

格式3:元素类型 [] 数组名 = {元素、元素、元素………..}

示例:int [] arr = {1,2,3,4,5}

打印数组角标上的值、遍历数组、打印数组长度。

class shuzu

{

publicstatic void main(String[] args)

{

int[] arr = new int [] {1,2,3,4,5};

System.out.println("arr数组1角标上的值="+arr[1]);

int[] ar = new int [5];

System.out.println("ar数组1角标上的值="+ar[1]);

for(int x=0;x<=arr.length-1;x++ )

{

System.out.println("遍历数组"+arr[x]);

}

System.out.println("数组长度"+arr.length);

}

}

求int类型数组中的最大值

示例1:

class  shuzu

{

publicstatic void main(String[] args)

{

int[] arr = new int [] {100,82,96,84,5};//定义一个数组

intmax = arr[0];//定义一个值用来和其他值比较。

for(int x=1;x<arr.length ;x++ )//使用for循环遍历数组

{

if(max<arr[x])

{

max=arr[x];//使用max变量记住最大值

}

}

System.out.println(max);

}

}

示例2;通过函数的方式定义一个获取任意int类型数组最大值

class  shuzu

{

publicstatic void main(String[] args)

{

int[] arr = new int [] {100,82,96,84,5};

intmax = getmax(arr);//定义一个值,用来比较,并且调用下面的getmax函数,同时把数组arr传入到该函数。

System.out.println(max);

}

publicstatic int getmax (int [] arr )

{

intmax = arr[0];

for(int x=1;x<arr.length ;x++ )

{

if(max<arr[x])

{

max=arr[x];

}

}

returnmax;//返回一个最大值。

}

}

数组排序

示例1:选择排序

思路:

1、要将无序数组排序,首先需要将数组打印出来。

2、建立一个打印数组的方法。

3、建立一个排序的方法,首先要排序就要让数组中的元素进行比较,并且需要将小值放到前面,也就是调换位置,可以通过第三方变量的方式来实现元素的调换。

class  shuzu

{

publicstatic void main(String[] args)

{

int[] arr = {1,2,4,6,3,5,7,10,9,8};

paixu(arr);//调用排序方法

printarr(arr);//调用打印数组方法

}

publicstatic void paixu (int [] arr)

{

for(int x=arr[0];x<arr.length ;x++ )

{

for(int y=x;y<arr.length ;y++ )

{

if(arr[x]>arr[y])

{

inttemp =arr[x];

arr[x]=arr[y];

arr[y]=temp;

}

}

}

}

public static void printarr (int [] arr)

{

for(int x=0;x<arr.length ;x++ )

{

System.out.print(arr[x]+" ");

}

}

}

示例2:冒泡排序

class  shuzu

{

publicstatic void main(String[] args)

{

int[] arr = {1,2,4,6,3,5,7,10,9,8};

paixu(arr);//调用排序方法

printarr(arr);//调用打印数组方法

}

publicstatic void paixu (int [] arr)

{

for(int x=0;x<arr.length-1 ;x++ )//-1表示最后一个值不用比较

{

for(int y=0;y<arr.length-x-1 ;y++ )//-x表示每次少比较1次

{

if(arr[y]>arr[y+1])

{

inttemp =arr[y];

arr[y]=arr[y+1];

arr[y+1]=temp;

}

}

}

}

public static void printarr (int [] arr)

{

for(int x=0;x<arr.length ;x++ )

{

System.out.print(arr[x]+" ");

}

}

}

数组的查找

示例1:普通遍历查找

class chazhao

{

publicstatic void main(String[] args)

{

int[] arr = {2,3,4,1,8,6};

intc=cz (arr,6);//调用查询方法,并且把arr数组和需要查找的key传入到查找方法中。

System.out.println(c);

}

publicstatic int cz(int [] arr , int key)//定义一个查询方法。

{

for(int x=0;x<arr.length ;x++ )

{

if (arr[x]==key)//定义判断条件

{

returnx;//满足条件返回该值

}

}

return-1;//不满足条件返回-1

}

}

示例2:折半查找

折半查找只能查找有序的数组

示例1:使用while循环语句直接判断条件查找

class  sz

{

publicstatic void main(String[] args)

{

int[] arr = {1,3,5,7,10,11,12,13,14,16};

inta=cz (arr,-10);//调用cz方法查询arr数组中-10的角标

System.out.println("a="+a);

}

publicstatic int cz (int [] arr,int key)

{             int min = 0;//定义一个最小值

intmax = arr.length-1;//定义一个最大值,最大值为数组长度-1

intmid = (min+max)/2;//定义中间值,中间值为最小值加最大值除以2

while(key!=arr[mid])//定义循环条件,如果key=中间值时则直接返回中间值。

{

if(key>arr[mid])//判断key是否大于中间值时

{

min=mid+1;//如果大于中间值,最小值等于中间值加1,游标向右移动

}

elseif (key<arr[mid])//判断key是否小于中间值

{

max=mid-1;//如果小于中间值,则最大值等于中间值减1,游标向左移动。

}

if(min>max)//防止游标越界

{

return-1;//表示超出范围

}

mid=(min+max)/2;//再次进行折半查找

}

returnmid;

}

}

示例2 :

相对示例1简化了代码,并且减少了循环次数。

class  sz

{

publicstatic void main(String[] args)

{

int[] arr = {1,3,5,7,10,11,12,13,14,16};

inta=cz (arr,10);//调用cz方法查询arr数组中-10的角标

System.out.println("a="+a);

}

publicstatic int cz (int [] arr,int key)

{

intmin = 0;//定义一个最小值

intmax = arr.length-1;//定义一个最大值,最大值为数组长度-1

intmid = (min+max)/2;//定义中间值,中间值为最小值加最大值除以2

while(min<=max)//首先判断是否越界,如果最小值大于最大值则直接返回-1

{

mid= (min+max)/2;//先将数组折半

if(key>arr[mid])//判断key值游标方向

{

min=mid+1;

}

elseif (key<arr[mid])//判断key值游标方向

{

max=mid-1;

}

else

returnarr[mid];//如果满足条件返回对应值。

}

return-1;//如果越界的话直接返回-1。

}

}

使用数组编写进制转换程序:

示例1:简单二进制转换

思路:

1、十进制转换到二进制是一个模以2,除以2的过程。

2、创建一个函数,实现任意十进制数转换2进制,需要定义一个num变量。

3、创建一个循环,用来实现不断模以2除以2的过程。并使用打印语句将模以2的结果打印出来。

publicstatic void te (int num)

{

StringBuffersb = new StringBuffer ();//定义一个容器,来存贮模以2的值,并实现反转

while(num>0)//定义循环条件,当前函数只能实现正数的二进制转换。

{

System.out.println(num%2);//打印的模以二的数值就是二进制数,但结果是倒的。

sb.append(num%2);

num=num/2;

}

System.out.println(sb.reverse());//打印存进这个容器中的数值,并反转。

}

示例2十六进制转换

十进制==>>十六进制

取最低4位,算一个值,再取下一个四位,算一个值

60的二进制:0000-0000 0000-0000 0000-0000 0011-1100

0000-0000 0000-0000 0000-0000 0011-1100  ==>>60

&0000-0000 0000-0000 0000-0000 0000-1111 ==>>15

-----------------------------------------

0000-00000000-0000 0000-0000 0000-1100 ==>>12==>>C

0000-00000000-0000 0000-0000 0011-1100 >>>无符号右移

0000-0000 0000-0000 0000-0000 0000-0011右移后等于3

60的十六进制为3C

因为右移8次,所以循环需要8次

class jz

{

publicstatic void main(String[] args)

{

sl(16);

}

publicstatic void sl (int num)

{

StringBufferab = new StringBuffer ();//定义Stringbuffer容器来存储数据,

for(int x=0;x<8;x++ )//因为每次右移4位,需要移动8次。0000-0000 0000-0000 0000-0000 0000-0000

{

inttemp =num &15;

if(temp>9)

//        System.out.print((char)(temp-10+‘A‘));

ab.append ((char)(temp-10+‘A‘));//将运行结果储存到容器中

else

//        System.out.print(temp);

ab.append(temp);//将运行结果储存到容器中

num=num>>> 4;

}

System.out.println(ab.reverse());//将储存到容器中的结果反转打印出来。

}

}

示例3、查表法的16进制转换

class jz

{

publicstatic void main(String[] args)

{

sl3(60);

}

publicstatic void sl3 (int num)

{

//定义一个数组,存储16进制中多涉及的数字。

char[] chs={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,

‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,

‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};

//定义一个8个元素的数组。

char[] a =new char[8];

intpost =0;

while(num!=0)

{

inttemp = num&15;

a[post++]= chs[temp];//先赋值给post再++

num= num >>>4;

}

for(int x=post-1;x>=0 ;x--)

{

System.out.print(a[x]);

}

}

/*

1、定义数组,数组包含16进制数中的所有元素

2、定义一个数组用来存储转换后的数值

3、定一个查找的指针,确定临时数据存储的位置。

4、使用for语句遍历存储后的数组,并打印。

*/

}

示例4、进制转换方法

实现十进制到二进制、八进制、十六进制的转换。

思想:

1、  进制转换是通过循环&一个数,并且通过右移来进行计算的。

2、  建立方法,首先先例一个进制转换的方法,并定义变量,包括num,要&的基数以及需要右移的位数。

class  jz2

{

publicstatic void main(String[] args)

{

er(60);

sl(60);

ba(60);

}

publicstatic void er (int num)

{

sl3(num,1,1);

}

publicstatic void sl (int num)

{

sl3(num,15,4);

}

publicstatic void ba (int num)

{

sl3(num,7,2);

}

publicstatic void sl3 (int num , int base , int bit)

{

//定义一个数组,存储16进制中多涉及的数字。

char[] chs={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,

‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,

‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};

char[] arr = new char [32];//存储数据

intpost =0;//定义指针,确定临时数组中的存储位置

if(num==0)

{

System.out.println(‘0‘);

}

while(num!=0)

{

inttemp = num&base;

arr[post++]= chs[temp];

num= num>>>bit;

}

for(int x=post-1;x>=0 ;x--)//post在上面的循环中已经是最大值,这里就必须使用--.从post的位置打印。

{

System.out.print(arr[x]);

}

System.out.println();

}

}

二维数组

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。

格式:

int [] []arr =new arr [4] [5]

int [] []arr =new arr{{1,2,3,4},{5,6,7,8,9}}

示例1、定义一个二维数组遍历并打印元素内容的方法。

思路:

1、  因为是二维数组的遍历,肯定要用到for嵌套循环,外循环确定小数组的个数,内循环确定小数组内的元素。

2、  就像打印矩形一样(也可以理解成表格),外循环是行数,内循环是列数。

class sz3

{

publicstatic void main(String[] args)

{

int[] [] arr  ={{1,2,3,4},{5,6,7,8},{9,10,11,12,13},{14,15,16,17,18}};

bl(arr);

}

publicstatic void bl (int [] [] arr)

{

for(int x=0;x<arr.length ;x++ )//定义for循环,x应该是二维数组中的小数组个数。

{

System.out.print(x+"数组");

for(int y=0;y<arr[x].length ;y++ )//定义一个内循环,来遍历小数组中的元素,arr[x]指的是小数组的元素角标。

{

System.out.print(arr[x][y]+"");

}

System.out.println();

}

}

}

  • 方法(函数)

概念:方法就是一段可以重复调用的代码段,在Java中如果某些代码希望可以被重复调用的时候,就可以使用方法进行定义,但是在定义的时候,因为现在要求所有的方法是可以由主方法直接调用的,所以,此时的方法声明格式如下:

public static 返回值类型 方法名称 (参数列表)

{

return 返回值;

}

在定义方法的时候方法名称的书写要求,第一个单词的首字母小写,之后的每个单词首字母大写

示例 1:

public class TestDemo

{

public static void main(String args [] )

{

testPrint(19);

}

public static voidtestPrint (int num)//定义了一个打印数据的方法。

{

System.out.println(num);

}

}

示例2、当方法指定了返回值类型,就必须使用return返回。(void表示没有具体返回值类型)
class  tes1

{

publicstatic void main(String[] args)

{

intx = add(10,20);

System.out.println(x);

}

publicstatic int add (int x , int y)

{

inttemp =x+y;

returntemp;

}

}

使用void声明的时候也可以使用return返回值。

方法的重载:

方法名称相同,但参数列表不同。当返回值类型不同时,并不是函数的重载。

class tes1

{

publicstatic void main(String[] args)

{

intx = add(10,20);

inty = add (10,20,30);

System.out.println(y);

}

publicstatic int add (int x , int y)

{

inttemp =x+y;

returntemp;

}

publicstatic int add(int x, int y, int z)

{

inttemp = x+y+z;

returntemp;

}

}

方法的递归

指的是一个方法不段的调用自己。

示例:

class tes1

{

publicstatic void main(String[] args)

{

intnum=0;

for(int x=0;x<=100 ;x++ )

{

num+=x;

}

System.out.println(num);

}

}

关于方法的调用,可以参考上面数组中的代码。

时间: 2024-10-11 17:34:27

Java基础总结2的相关文章

-Java基础-Java介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. java的介绍 1.1java简介 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言. 它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机.电话.闹钟.烤面包机等家用电器的控制和通讯问题.由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划.就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机

第3篇-JAVA基础

第3篇-JAVA基础 每篇一句 :目标是给梦想一个期限,行动与坚持就是实现梦想的过程 初学心得: 遇到困难或问题,它不是休止符,而是引向你如何解决问题的标识 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-26| JAVA基础 Ⅱ] 上篇回顾 上篇文章中我们学习了JAVA底层的运行机制与深入剖析以及解释其中JAVA基础代码的含义 本篇文章将JAVA基础Ⅱ全面剖析解释,因为JAVA基础非常重要,务必要牢记知识点!!! 1.JAVA基础语法格式 JAVA采用unicode编码 1

Java基础学习第五天——方法与数组

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法 方法 方法就是完成特定功能的代码块,即函数. 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用public static,后详解. 返回值类型:就是功能结果的数据类型. 方法名:符合命名规则即可,方便我们的调用. 参数: 实际参数:就是实际参与运算的.

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

java基础 计算今天距本月最后一天还剩多少天

Calendar  c = new GregorianCalendar();   //GregorianCalendar 是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统. GredorianCalendar 是一种混合日历,可由调用者通过调用setGregorianChange()来更改起始日期. Calendar c = new  Calendar.getInstance(TimeZone.getTimeZone("GMT+08:OO"));  //

Java基础语法

Java的基础语法中包含字符集.标识符和关键字.变量和常量.语句.注释.运算符和表达式这些基本要素. 一.关键字 编程语言都有一些保留的单词,用于定义该语言,这些单词对于编译器有特殊含义,不能作为标识符使用: Java中的true.false.null这三个保留字,不能作为标识符使用,对于编译器有特殊含义: main是一个用于描述Java程序开始方法的特殊名称,它不是一个关键字: abstract 抽象 boolean 逻辑运算: 布尔 break 打破: 断开 byte 字节: case 例,

JAVA基础——重新认识String字符串

深入剖析Java之String字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象有三种方法 String s1="我是字符串1"; String s2=new String();//创建一个空的字符串对象 String s3=new String("我是字符串2&q

第2篇-JAVA基础

第2篇-JAVA基础 每篇一句 :无论处在任何领域中,即使是在小的事情,都要让每一天有所价值 初学心得: 在学习的过程中,错误是很宝贵的,它一笔"财富",更是一种"价值" (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-24 | JAVA基础] JAVA基础 回顾 在上一篇文章中,最后提到两个问题, 相信读者们已经提前超额完成了"任务" 下面跟着笔者的思路,深入掌握JAVA底层的运行机制 JAVA运行机制 (重中之重) JAV

第4篇-JAVA基础

第4篇-JAVA基础 每篇一句 :世界上本没有完美,但是我们从未放弃追求完美 初学心得: 乐于挥霍的时间,都不能算作浪费 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-01| JAVA基础 Ⅳ] 程序运行流程 (1) 顺序结构 (2) 分支结构 (3) 循环结构 (4) break 与 continue关键字 (5) 数组 (6) 方法 1.顺序结构 如果代码里没有流程控制,程序是至上而下一行一行执行的 一条语句执行完之后继续执行下一条语句,直到程序的最后 2.分支结构 顺

JAVA基础汇总及例题详解

java语言的一个核心: jdk, java development kits---面向开发人员 jre, java Runtime Environment---服务器上 java虚拟机---(以字节码为指令的CPU)---*.class java编译器-->字节码-->类加载器进行验证-->虚拟机运行 垃圾回收机制 public class ...{ int a = 1; } c/c++垃圾回收由程序员去运行 java编程语言(一门纯面向对象)的特点: 1, 面向对象  封装  继承