Java的基本程序设计结构
程序员文章站
2022-07-12 18:36:31
...
Java的基本程序设计结构
文章目录
3.1一个简单的Java应用程序
public class hello
{
public static void main(String[] args)
{
System.out.print("Hello Word!"); //不换行
System.out.println("Hello Word!"); //换行
}
}
-
类名:字母开头,后面可以为字母和数字的任意组合,长度无限制
-
main方法必须是静态
3.2 三种注释
- //(最常用)
- /* */ (不能嵌套)
- /** */(自动生成文档)
3.3 数据类型
-
整型:int、short、long、byte
-
浮点型:float、double
-
char型 (不推荐使用,最好用抽象数据类型表示)
-
boolean(布尔)类型:true(1) false(0)
3.4 变量
- 变量初始化(不区分声明和定义)
方法一
int a;
a=12;
方法二(推荐)
int a=12;
- 常量:利用关键字final表示
3.5 运算符
-
基本运算符:+、-、*、\、%
-
自增运算符与自减运算符
-
关系运算符与boolean运算符
(1)==:是否相等
(2)!=:是否不等
(3)&&“逻辑与” 、||“逻辑或” (短路方式求值)
(4)x < y ? x : y 返回x和y中较小的值
- 位运算符
&(“与”)、|(“或”)、^(“异或”)、~(“非”)
- 运算符优先级
3.6 字符串
3.6.1子串
substring方法(从0计数,直到n为止)可以从一个较大的字符串中提取一个子串
String greeting="Hello";
String s=greeting.substring(0,3) //创建一个Hel字符串
3.6.2 拼接
String a="Hello";
String b="Word";
String message=a+b; //message=HelloWord
注:将一个字符串与一个非字符串的值拼接时,后者转换成字符串
int age =13;
String rating="PG"+13; //rating=PG13
3.6.3 不可变字符串
String类对象称为不可变字符串
3.6.4 检测字符串是否相等
- equals方法
s.equals(t); //相等,返回true;否则返回false
"Hello".equals(greeting);
可以使字符串变量或者常量
- equalsIgnoreCase方法
检测两个字符是否相等,并且不区分大小写
"Hello".equalsIngoreCase("hello")
注:不能使用==运算符检测两个字符串是否相等
3.6.5 空串与Null串
-
空串:长度为0的字符串
检测字符串是否为空的两种方法
if(str.length()==0);
if(str.equals(""));
- Null串:表示目前没有任何对象与该变量相关联
3.7 大数值
- java.math 中的两个类BigInteger(任意精度整数运算)和 BigDecimal(任意精度浮点数计算)
BigInteger c=a.add(b); //c=a+b
BigInteger d=c.multiply(b.add(BigInteger.valueOf(2))); //d=c*(b+2
注:Java没有提供运算符重载功能,只为字符串的连接提供了+运算符
- 下例为求n个数字中选取k个的中奖概率,即Cnk =
package code;
import java.math.*;
import java.util.*;
public class BigIntegerTest { //n个数字中选取k个的中奖概率
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
System.out.print("How many numbers do you need to draw?");
int k=in.nextInt();
System.out.print("What is the highest number you can draw?");
int n=in.nextInt();
BigInteger lotteryOdds=BigInteger.valueOf(1);
for(int i=1;i<=k;i++)
{
lotteryOdds=lotteryOdds.multiply(BigInteger.valueOf(n- i+1)).divide(BigInteger.valueOf(i)); //n*(n-1)*(n-2)*···*(n-k+1)/(1*2*3*···*k)
BigInteger.valueOf(i);
}
System.out.print("Your odds are 1 in "+lotteryOdds+".Good luck!");
}
}
- 常见的方法
3.8 数组
3.8.1 数组定义
-
数组是一种数据结构,用来储存同一类型值的集合
-
创建数字数组时,所有元素初始化为0。boolean数组元素初始化为false。对象数组的元素初始化为null
3.8.2 遍历数组的三种方法
package code;
import java.util.Arrays;
public class fore_each
{
public static void main(String[] args)
{
int[] a={1,2,3,4,5};
for (int b:a) //for each 循环
{
System.out.print(b+" ");
}
System.out.println();
System.out.println(Arrays.toString(a)); //将数组转化为字符串输出
for(int i=0;i<5;i++) //for循环遍历数组
{
System.out.print(a[i]+" ");
}
}
}
3.8.3 数组的初始化和匿名数组
- 创建数组同时初始化
int[] a={1,2,3,4,5}; //初始化
- 匿名数组
new int[]{1,2,3,4,5}; //匿名数组
优点:不创建新变量的情况下重新初始化一个数组
b=new int[]{1,2,3,4,5};
java中允许数组长度为0
3.8.4 数组拷贝
- 拷贝:一个数组变量拷贝给另一个数组变量
int[] b=a;
a[5]=5; //b[5]也是5
- copyTo方法:一个数组的所有值拷贝到一个新的数组中
int b[]={1,2,3,4,5};
int a[]=Arrays.copyOf(b,4);
3.8.5 数组排序
对数值型数组排序:Arrays类的sort方法
package code;
import java.util.*;
public class LotteryDrawing {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
System.out.print("How many numbers do you need to draw?");
int k=in.nextInt(); //想要获奖的数
System.out.print("What is the highest number you can draw?");
int n=in.nextInt(); //总数
int[] numbers=new int[n]; //将数字存入数组numbers中
for(int i=0;i<numbers.length;i++)
{
numbers[i]=i+1;
}
int[] result=new int[k]; //存放抽取出来的数值
for(int i=0;i<result.length;i++)
{
int r=(int)(Math.random()*n); //返回0-n之间的随机数
result[i]=numbers[r];
numbers[r]=numbers[n-1];
n--;
}
Arrays.sort(result); //排序
System.out.println("Bet the following combination.It'll make you rich!");
for(int r:result)
{
System.out.println(r);
}
}
}