public class Number {
static int mydata=414;
static int yourdata=1973;
public static void main(String[] args) {
int mydata=1314;
System.out.println("类体静态变量mydata的值是"+Number.mydata);
System.out.println("类体静态变量yourdata的值是"+yourdata);
System.out.println("方法内部的局部变量mydata的值是"+mydata);
}
}
/*
输出----------
类体静态变量mydata的值是414
类体静态变量yourdata的值是1973
方法内部的局部变量mydata的值是1314
----------------
*/
四、运算符
异或的应用范例:不使用辅助变量实现两变量的值互换
import java.util.Scanner;
public class Nexchange {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入变量A的值");
long A=scan.nextLong();
System.out.println("请输入变量B的值");
long B=scan.nextLong();
System.out.println("A="+A+"\tB="+B);
System.out.println("执行变量互换...");
A=A^B;
B=B^A;
A=A^B;
System.out.println("A="+A+"\tB="+B);
}
}
/*
这里运用了位操作异或,对于整数X有:X^X=0;X^0=X;同时异或操作满足结合律和交换律
将A=A^B带入后面两式,分别如下:
B=B^A=B^A^B=A^(B^B)=A^0=A;
A=A^B=(A^B)^A=...=B;
----------
引申:除异或方法外,不通过辅助变量的方法还有:
(1)a=a+b;b=a-b;a=a-b;
(2)a=a*b;b=a/b;a=a/b;
*/
五、实例
1、判断某一年是否为闰年
import java.util.Scanner;
public class LeapYear{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入年份(0~99999):");
long year=scan.nextLong();
while (year<0||year>99999){
System.out.println("请重新输入年份(0~99999):");
year=scan.nextLong();
}
scan.close();
if((year/400==0)||((year/4==0)&&(year/100!=0))){
System.out.println("输入年份为"+year+"是闰年");
}
else {
System.out.println("输入年份为"+year+"不是闰年");
}
}
}
2、不使用乘号运算符,用移位运算符计算21*16。
public class MoveBit {
public static void main(String[] args){
long a=21L;
int x=1;
for(int i=1;i<5;i++){
x*=2;
a=a<<1;
System.out.println("21左移动"+i+"位就是乘以"+x+"结果为"+a);
}
}
}
/*
创建GetTerm类,在主方法中定义变量x,从控制台输入接受赋值,并通过if...else if多分支语句判断x的值决定输出结果。
*/
import java.util.Scanner;
public class GetTerm {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个整数:");
int x=scan.nextInt();
if(x>1000){
System.out.println("x的值大于1000");
}else if(x>500){
System.out.println("x的值大于500,但小于1000");
}else if(x>100){
System.out.println("x的值大于100,但小于500");
}else {
System.out.println("x的值小于100");
}
scan.close();
}
}
3、switch多分支语句
switch(表达式){ //表达式的值必须是整型或者字符型
case 常量值1: //这里常量值必须与表达式的值对应,下同
语句序列1
break; //跳出switch语句块,如没有则会继续执行下一句
case 常量值2:
语句序列2
break;
...
default: //当上述各case的常量值没有匹配时候则从此处执行
语句序列;
break;
}
import java.util.Scanner;
public class Switch_Example {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name=scan.nextLine();
System.out.println("请输入你的专业编号(0~9):");
int majorLanguage=scan.nextInt();
switch(majorLanguage){
case 0:
case 1:
case 2:
System.out.println("恭喜你,"+name+"你被分配到办公室");
break;
case 3:
case 4:
case 5:
case 6:
System.out.println("恭喜你,"+name+"你被分配到总工办");
break;
case 7:
case 8:
case 9:
System.out.println("恭喜你,"+name+"你被分配到财务处");
break;
default:
System.out.println("抱歉,你未被录用");
}
scan.close();
}
}
//使用foreach语句读取一位整型数组各元素
public class Repetition {
public static void main(String[] args){
int arr[]={1,3,4,7,8,10};
System.out.println("一维数组中各元素分别为:");
for(int x:arr){
System.out.println(x+"\t");
}
}
}
//找出一维数组中的最小值元素
public class ArrayMinNum {
public static void main(String[] args){
int arr[]=new int[]{12,398,25,1024,414,1973,2,520,1013};
int tempMin=arr[0]; //最小值暂存器,初始值为第一个元素值
int markNumber=1; //位置标识符
for(int j=1;j<arr.length;j++){
if(tempMin>arr[j]){
tempMin=arr[j];
markNumber=j+1;
}
}
System.out.println("数组arr中最小值是"+tempMin+";是数组中第"+markNumber+"个元素");
}
}
二、二维数组
二维数组中各元素实际上是一维数组,创建、分配空间及赋值类似:
int arr[][]; //声明创建
arr=new int[2][3] //分配2*3个元素空间
arr={{1,2,3},{4,5,6}}; //赋值
int arrx[][]=new int[][]{{1,2},{3,4},{5,6}}; //创建+分配+赋值
//对一个二维数组进行转置操作
public class ArraySwap {
public static void main(String[] args) {
int arr1[][]=new int[][]{{1,2,3},{4,5,6},{7,8,9}};
int arr2[][]=new int[3][3];
for(int i=0;i<arr1.length;i++){
for(int j=0;j<arr1[i].length;j++){
arr2[j][i]=arr1[i][j];
}
}
for(int i=0;i<arr1.length;i++){
for(int j=0;j<arr1[i].length;j++){
System.out.print(arr1[i][j]+" ");
}
System.out.println("");
}
for(int i=0;i<arr2.length;i++){
for(int j=0;j<arr2[i].length;j++){
System.out.print(arr2[i][j]+" ");
}
System.out.println("");
}
}
}
三、数组的基本操作
1、通过for方法的遍历元素
//1、二维数组的元素遍历输出
public class ArrayTrap {
public static void main(String[] args){
int arr[][]=new int[][]{{1,3,5,7},{2,4,6},{0,10}};
System.out.println(
System.out.println("for循环常规方法:");
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]
System.out.print(arr[i][j]+" ");
}
System.out.println("");
}
System.out.println("foreach方法:");
for(int arrx[]:arr){
for(int a:arrx){
System.out.print(a
System.out.print(a+" ");
}
System.out.println("");
}
}
}