JAVA总结3_4
来源:互联网 发布:java前端面试题 编辑:程序博客网 时间:2024/04/26 12:11
JAVA The 3rd day
一.各参数类型参与运算,类型的转换:
(1)char数据类型是以整数存储在内存中(范围是0~65535);
eg: char c=97;
char c2='a';
System.out.println(c); //a
System.out.println(c2+5); //102
(2)byte、short、char这三种变量一旦参与运算,则编译器 将运算的结果转换为int。
eg: byte b1=1;
byte b2=2;
byte b3=(byte) (b1+b2); //(b1+b2)为int型,强转为byte
(3)当给byte、short、char变量以“直接常量”的方式赋值,只要这个“直接常量”没有超过这些数据类型的范围, 则编译器也是允许的。
eg: int x=5;
short b=6;
byte c=2;
二.方法声明、调用:
(1)声明格式:
[修饰符1修饰符2 …]返回值类型方法名(形式参数列表){
程序代码;
[return返回值];
}
本节主要涉及到static静态方法使用。
(2)方法的调用:直接调用:方法名(实参列表);类名调用:类名.方法名(实参列表);
eg:package method;
public class ChangeNumber {
public static void main(String[] args) {
int a=1;
System.out.println("调用changeNumber(int a)方法之前,a="+a);
changeNumber(a);
System.out.println("调用changeNumber(int a)方法之后,a="+a);
}
public static void changeNumber(int a){
if(a==3){
System.out.println("直接结束该方法");
return; // 直接结束方法
}
System.out.println("进入changeNumber(int a)方法了...a="+a);
a+=5;
System.out.println("在changeNumber(int a)方法改变值后,a="+a);
}
}
三.递推算法:
public class SumRecursive {
public static void main(String[] args) {
int result=getSum(100);
System.out.println(result);
}
if(number==1){
return 1;
}else{
int temp=getSum(number-1); // 从1开始到number-1的和
return temp+number;
}
}
}
1.使用for循环: for(inti=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
2.foreach输出: for(数据类型 变量名称:数组名称){
…
}
eg:for(int x:array){
System.out.print(x+" ");
}
eg:package array;
public class ArrayDemo {
public static void main(String[] args) {
int[] a=new int[5];
a[2]=23;
a[4]=19;
System.out.println("遍历第一个数组:");
for(int i=0;i<a.length;i++){ // i充当了下标
System.out.print(a[i]+" ");
}
System.out.println();
int[] b={11,22,33,44,55,66}; // 直接给数组赋值
System.out.println("遍历第二个数组:");
for(int i=0;i<b.length;i++){ // i充当了下标
System.out.print(b[i]+" ");
}
System.out.println();
System.out.println("使用foreach方式遍历数组:");
for(int x:b){
System.out.print(x+" ");
}
System.out.println();
}
}
}
五.方法的可变参数:
格式: 返回值类型 方法名称(类型… 参数名称){
}
eg:package array;
public class ChangeableParam {
public static void main(String[] args) {
show();
show(1,12,56,89);
show(23,67,35,45);
}
public static void show(int... a){
System.out.println("当前传递的参数个数是:"+a.length);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
}
The 4th day
一.数组的拷贝:System类中有一个静态方法:
格式: public staticnative voidarraycopy(Objectsrc,int srcPos, Object dest, int destPos, int length)
eg:
package copy;
public class ArrayCopy {
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7,8,9};
int[] b={11,22,33,44,55,66,77,88,99};
System.arraycopy(a,1,b,4,3);
System.out.println("复制后的数组:");
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+" ");
}
}
}
二.数组排序算法
(1)冒泡排序:
eg:外层循环控制比较的“趟数”,内层循环控制着当前趟的“两两比较”的次数
package sort;
public class BubbleSort {
public static void main(String[] args) {
int[] a={22,55,11,66,88,77,44,99,33};
bubbleSort(a);
}
public static void bubbleSort(int[] a){
for (int i = 1; i <=a.length-1; i++) { // 外层循环控制比较的“趟数”
System.out.println("开始第"+i+"趟排序");
boolean flag=true;
for(int j=0;j<a.length-i;j++){ // j变量是数组的索引(下标),j也控制着当前趟的“两两比较”的次数
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=false;
}
}
System.out.println("第"+i+"趟结束");
if(flag){ // 如果当前“趟”已经排号序,则不必进行下一趟的排序,直接跳出外层循环
break;
}
System.out.println("第"+i+"趟排序结果:");
for(int x:a){
System.out.print(x+" ");
}
System.out.println();
}
}
}
(2)插入排序:选择数组中其中一个数据作为指标,前面的数据与之比较,大的向后移位,使用for循环,直到所有数据按升序排好序。
eg:package sort;
public class InsertSort {
public static void main(String[] args) {
int[] a={22,55,11,66,88,77,44,99,33};
insertSort(a);
System.out.println("插入排序的结果:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}
public static void insertSort(int[] a){
for (int i = 1; i <=a.length-1; i++) {
int data=a[i]; // 当前“指示灯数据”
int j=i-1; // 使用j变量记录“指示灯数据”的前一个数据的索引
while(j>=0 && data<a[j]){
a[j+1]=a[j]; // 后移“指示灯”数据前面的数据
j--;
}
a[j+1]=data;
}
}
}
(3)快速排序:从待排序的数据序列中任取一个数据(如第一个数据)作为分界值,比它小的数据元素放到左边,比它大的数据元素放到它的右边。然后对左右两个子序列按照上述方法进行递归排序,直到排序完成。
eg:快速排序方法
package sort;
public class QuickSort {
public static void main(String[] args) {
int[] a={22,55,11,66,88,77,44,99,33};
quickSort(a,0,a.length-1);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}
public static void quickSort(int[] array,int start,int end){
if(start>=end){
return; // 结束方法
}
int data=array[start]; // 将起始索引执行的值作为“分界值”
int i=start+1; // 记录向右移动的位置(“红军”)
int j=end; // 记录向左移动的位置("蓝军")
while(true){
while(i<=end && array[i]<data){
i++; // 索引右移
}
while(j>=start+1 && array[j]>data){
j--; // 索引左移
}
if(j>i){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}else{
break;
}
}
// “蓝军”与“分界值”交换位置
array[start]=array[j];
array[j]=data;
quickSort(array,start,j-1); // 递归调用完成“分界值”左边的排序
quickSort(array,j+1,end); // 递归调用完成“分界值”右边的排序
}
}
三. 二维数组:
(1)二维数组声明:数据类型[][]数组名称=new数据类型[行的个数][列的个数];
而二维数组长度就是其行数。
(2)二维数组访问元素:数组名称[行的索引][列的索引]
(3)二维数组静态初始化:
数据类型[][]数组名称={
{元素1,元素2,....},
{元素1,元素2,....},
...
};eg1: 声明二维数组,并给其数组元素赋值:
package twoarray;
public class TwoArrayDemo {
public static void main(String[] args) {
String[][] array=new String[3][2];
array[0][0]="春";
array[0][1]="夏";
array[0][2]="秋";
array[1][0]="冬";
array[1][1]="四季";
for(int i=0;i<array.length;i++){ // 循环行
for(int j=0;j<array[i].length;j++){ // 循环当前行(一维数组)的数据
System.out.print(array[i][j]+" ");
}
System.out.println();
}
}
}
eg2:静态初始化
package twoarray;
public class InitialTwoArray {
public static void main(String[] args) {
String[][] array={
{"Apple","Orange","Banana"},
{"Dog","Cat"},
{"Phone","Machine","Book","Java","兵法"}
};
for(int i=0;i<array.length;i++){ // 循环行
for(int j=0;j<array[i].length;j++){ // 循环当前行(一维数组)的数据
System.out.print(array[i][j]+" ");
}
System.out.println();
}
}
}
- JAVA总结3_4
- Java流_4总结
- 3_4
- javascript初学总结_4
- java 代码片段_4
- Java面向对象_4
- JAVA知识_4
- java学习_4.运算符
- Java容器_4个接口
- Java飞机大战0_4
- 总结系列_4(C++知识学习,续...)
- 机器学习:贝叶斯总结_4:分类
- 3_4长方柱类
- java核心技术8--笔记(2)_4章
- JavaSE学习笔记_4:Java继承
- JqGrid学习总结_4动态添加下拉框
- 黑马程序员 Java基础_4 java集合框架
- 第九章 Java多线程机制 05_线程同步_4
- C语言实验——整数位
- 为学习网页布局打基础的CSS的单位和盒模型
- Linux下源码安装的配置(configure)步骤之--prefix
- solr 的安装配置
- 小程序顶部tabbar,随着内容左右滑动tabbar进行联动
- JAVA总结3_4
- 【NIPS2017现场+数据也疯狂】最佳论文大奖公布,算法关注度超越深度学习排第一
- STL学习之map与multimap操作练习
- 菜鸟日记(yzy) 微信公众号网页的开发基础(微信接口调用)
- 初识View-ONE
- 共同父域下的单点登录
- OpenCV HOGDescriptor 参数图解
- Spring framework(5):AOP
- postgresql 判断字段是否为空