java基础部分

本文介绍了编程中的数据类型,包括隐式和显式转换,以及整数的运算规则。强调了循环结构如while、for和switch语句的使用,以及数组的一维和二维声明和操作。此外,还提到了字符串的操作和比较方法,以及基础的排序算法和效率问题。
摘要由CSDN通过智能技术生成

1 数据类型

1.1 隐式数据类型转换:系统会自动把容纳信息量小的数据类型转换成信息量大的数据类型。
显式数据类型转换:需要声明,否则会出现编译错误。
			(数据类型)数据或变量
			int a=(int)3.0
1.2 只有整数才能进行取余(%)运算。
1.3 被除数和除数都是整数,其结果实际上在取整。如果要计算分数的值需要把分子或分母用实数表示。
1.4 a*=b+c等效于a=a*(b+c)
1.5 nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble()
1.6 实数在程序中是近似储存。
1.7 print与printlin相比前者不换行,后者换行。

2 顺序结构

2.1 char 2字节

2.2 ‘\xxx’ 表示八进制 a=‘\102’ 八进制的66,对应B。

    '\xxx' 表示十六进制   a='\u0043' 十六进制的67,对应C。

2.3 用System的next()函数连接charAt(0)来输入字符:

		a=in.next().charAt(0);

2.4 类和对象是面向对象程序设计中的最核心概念。

3 选择结构

3.1 if 语句:

if(布尔表达式){
	语句块1;
}else{
	语句块2;
}
语句块后只有一条语句可以省略’{}‘

3.2 多分支结构:

if(布尔表达式){
	语句块1;
}else if{
	语句块2;
}else if{
	语句块3;
}else{
	语句块4;
}

3.3 switch语句:

嵌套层数较多时,可读性较强。
switch(表达式){
case 值1:语句块1;[break;]
case 值2:语句块2;[break;]
...
case 值n:语句块n;[break;]
[default:语句块n+1;]
}
表达式的值的类型不允许是实数类型。
除特殊情况break不可省略。省略会一直往后执行,直到语句结束或遇到break语句。

3.4 问号表达式:

布尔表达式?表达式1:表达式2;

4 循环结构

4.1 while 循环 当型循环

while(布尔表达式)
{
	循环体语句块
}

4.2 do while 循环 直到型循环

do{
循环体语句块
}while(布尔表达式);

4.3 for 循环 当型循环

for(初值表达式;布尔表达式;循环控制表达式)
{
	循环体语句块
}

4.4 循环控制语句

break;
break 标号;  //有标号可以指定退出多层循环。
coutinue;
continue 标号;

5 数组

5.1 一维数组

1 先声明后初始化:
类型标识符 数组名[];  或  类型标识符[] 数组名;
数组名=new 类型标识符[数组长度];
2 合并两条:
int[ ] a=new int [6];
3 数组名.length

5.2 二维数组 //不可以只指定列数不指定行数

先声明后初始化:
类型标识符 数组名[][];  或  类型标识符[][] 数组名;
数组名=new 类型标识符[数组长度][数组长度];或  数组名=new 类型标识符[数组长度][];
两条合并:
类型说明符 [][] 数组名=new 类型说明符[数组长度][];
或
类型说明符 数组名 [][]=new 类型说明符[数组长度][数组长度];

数组名.length
数组名[i].length

5.3 效率更高的冒泡法:

import java.util.Scanner;
public class 冒泡法 {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int[] a=new int[5];
        int i,j,t;
        //输入数据
        for(i=0;i< a.length;i++)
            a[i]=in.nextInt();
        //处理数据
        for(i=0;i<a.length;i++) {
            boolean isSwap=false;      //假定本轮没有发生交换
            for (j = 0; j < a.length-1-i; j++)    //最后的i+1个元素已经有序
                if (a[j+1] < a[j]) {
                    t=a[j];
                    a[j] = a[j+1];
                    a[j+1]=t;
                    isSwap=true;
                }
            if(!isSwap)          //如果本轮没有发生交换,排序结束
                break;
        }
        //输出
        for(i=0;i< a.length;i++)
            System.out.print(a[i]+" ");
    }
}

高性能的排序算法可参考数据结构或算法类教材

5.4 Arrays类

1 sort 函数 (用于升序排序)
调用方法:
Arrays.sort(数组名);
Arrays.sort(数组名,int fromIndex,inttoIndex);   //将下标从多少到多少排序
2 binarySearch函数           //二分法查找某个元素,返回下标,需确保数据是有序的。
Arrays.	binarySearch(数组名,要查找的数据);     

5.5 .toCharArray();

可以将字符串的序列转化成对应的字符数组。

5.6 Random类

可以生成任何类型的随机数
Random xxx=new Random(n);

6 字符串

6.1字符串的创建

String类对象创建,new关键词创建
用new创建相同的字符串,地址不同。
字符串的比较方法:
1 ”==“,比较的是引用地址
2 equals 函数,比较的是字符串内容
String对象不可修改,每次修改字符串内容都是创建了一个新字符串。

6.2 String.valueOf(参数)方法可以将任何类型的参数转换为String类型

6.3StringBuffer类 可变字符串类

new StringBuffer();/new StringBuffer("hello");
如果频繁对字符串进行修改StringBuffer运行速度会更快一些。修改不频繁则使用String类会更好。
与StringBuffer相似的还有StringBuilder,前者是线程安全的,后者的运行速度更快。

6.4 包装类

6.5 日期时间类

1 date类
2 Calendar类    // 建议使用
Calendar calendar=Calendar.getInstance();

7 函数

7.1定义

[public] [static] 返回值 函数名(参数列表){
	函数体
}
如果函数有多个参数,每个参数的数据类型都必须独立声明。

7.2

值传递---基本数据类型
地址传递--其他数据类型
对String类型的传递,为地址传递,但由于String类型不可更改,对该地址的修改会创立新的对象(在新地址中),原地址数据不变,因此其效果与值传递相同。

7.3 全局变量与局部变量

全局变量与局部变量的名字相同,则使用局部变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值