java
第二天
( 一) 数据类型;
2 种 : 对象类型 :
基本类型 : 整数 :
byte[1], -128-----127
short[2], -32768------32767
int[4], -2147483648-----2147483647
long[8], -2[63]------2[63]-1
浮点数:
float [4] float f=1.3f
double[8] double d=1.3d [d] 可以加也可以不加 .
不尔类型 : boolean 字面值只有 true,flase, [ 不能 b=1] 只能是 : b=true;
字符类型 : char[2] unicode 编码 char c='/u2323[asc 码 ]'
char c='/n0061' char c='a' char c=97; char a=' 中 '.
public class TestDataType{
( 一) 数据类型;
2 种 : 对象类型 :
基本类型 : 整数 :
byte[1], -128-----127
short[2], -32768------32767
int[4], -2147483648-----2147483647
long[8], -2[63]------2[63]-1
浮点数:
float [4] float f=1.3f
double[8] double d=1.3d [d] 可以加也可以不加 .
不尔类型 : boolean 字面值只有 true,flase, [ 不能 b=1] 只能是 : b=true;
字符类型 : char[2] unicode 编码 char c='/u2323[asc 码 ]'
char c='/n0061' char c='a' char c=97; char a=' 中 '.
public class TestDataType{
public
static
void
main(String args[]){
byte
b1=1;
byte
b2=2;
byte
b3=b1+b2;
System.out.println(b3);
//
可能丢失精度
[
自动类型提升
] byte + byte = int
也就是说
,
有
double// -> double
float
->
float
long
->
long
其他的全是
int
String
在
Java
中
重载
了
,"+"
号
,
相当于字符串联接
. s1+s2
如果其中有一个是字符串结果是字符串
例子 : System.out.println("123"+456+789); 结果 : 123456789
System.out.println(12+34+"678"); 结果 : 46678
(2) 局部变量:
public class Test {
例子 : System.out.println("123"+456+789); 结果 : 123456789
System.out.println(12+34+"678"); 结果 : 46678
(2) 局部变量:
public class Test {
public
static
void
main(String[] args) {
int
a;
//
定义在方法中的变量为局部变量
:
局部变量必需先赋值
,
后使用
.
局部变量作用范围
:
//
定义它的代码块
.
在一个重合的范围内
,
不允许两个局部变量发生命名冲突
.
}
}
(3) 操作符.
>>: 有符号右移, >>>: 无符号右移.
(3) 操作符.
>>: 有符号右移, >>>: 无符号右移.
&:
非短路运算符
.
&&:
短路运算符
.
a=a+b;
和
a+=b;
的区别
;
后面的
+=
没有自动类型提升
.
例子
:
byte
a=10; a=a+20
和
a+=20;
(4)
流程控制:
switch(s) s=[byte,short,int ,char]
(5) 数组
是一个对象; 没有方法,只有一个属性: .length;
数组元素,在分配空间的时候,就已经分配了默认值: 都是0: 0,0L,OF,OD,false;String [对象]->NULL;
定义: int[] a;
分配空间: a=new int[5];
和起来作: int[] b={23,23,45,5,34,2,52,2,3}; //显式初始化.
二维数组:是一维数组的一维数组:
int[] b={3,4,5,6,7,8,9};
int[] b=new int[]{3,4,5,6,7,7};//在这里不允许指定长度;
int[][] a=new int[3][];
a[0]=new int[3];
a[1]=new int[5];
a[2]=new int[9];
如何定义全局变量.
switch(s) s=[byte,short,int ,char]
(5) 数组
是一个对象; 没有方法,只有一个属性: .length;
数组元素,在分配空间的时候,就已经分配了默认值: 都是0: 0,0L,OF,OD,false;String [对象]->NULL;
定义: int[] a;
分配空间: a=new int[5];
和起来作: int[] b={23,23,45,5,34,2,52,2,3}; //显式初始化.
二维数组:是一维数组的一维数组:
int[] b={3,4,5,6,7,8,9};
int[] b=new int[]{3,4,5,6,7,7};//在这里不允许指定长度;
int[][] a=new int[3][];
a[0]=new int[3];
a[1]=new int[5];
a[2]=new int[9];
如何定义全局变量.
(
6
)字符串转换成
int
型的数据
下面是把字符串转换成 int 型的函数 . //[ 很重要的 ]
int m=Integer.parseInt(args[0]);
int n=Integer.parseInt(args[1]);
======================================================================
作业 :
2, 有偶数支足球队进行单循环比赛 , 请按照指定算法打印每轮的对阵形势
算法 ://U 形排列 , 逆时针旋转 ,// 数组轮换
public class game {
下面是把字符串转换成 int 型的函数 . //[ 很重要的 ]
int m=Integer.parseInt(args[0]);
int n=Integer.parseInt(args[1]);
======================================================================
作业 :
2, 有偶数支足球队进行单循环比赛 , 请按照指定算法打印每轮的对阵形势
算法 ://U 形排列 , 逆时针旋转 ,// 数组轮换
public class game {
static
String[]
a
= {
"
中国
"
,
"
巴西
"
,
"
德国
"
,
"
法国
"
,
"
英国
"
,
"
阿根廷
"
};
public
static
void
main(String[] args) {
game g =
new
game();
for
(
int
n = 0; n <
a
.
length
- 1; n++) {
System.
out
.println(
"The time of ["
+ (n + 1) +
"]"
);
g.print();
g.nextRound();
}
}
void
print() {
for
(
int
i = 0; i < (
a
.
length
/ 2); i++) {
System.
out
.println(
a
[i] +
"---"
+
a
[
a
.
length
- i - 1] +
'/t'
);
}
System.
out
.println();
}
void
nextRound() {
String b =
a
[
a
.
length
- 1];
for
(
int
i =
a
.
length
- 1; i >= 2; i--) {
a
[i] =
a
[i - 1];
}
a
[1] = b;
}
}
总结: 这一个题为什么没有很快的做出来?因为1,没有面向对象的思想,分析问题的逻辑很混乱[作的题目少],没有分而置之的思想.首先,要把问题分为若干的小函数.也就是一些小方法.大问题就是这样一个一个的小问题组合起来的,写各种方法[函数],有利于代码的重用性.在着重的提示一下,把问题分而置之.分析然后再设计各种方法.
=====================================================================
3.定义一个奇数阶二维数组,把每个元素顺序填入不同的自然数,要求行列和对角线元素相加的结果相等[九宫格问题]:
8 1 6
3 5 7
4 9 2
3. 九宫格问题:
public class ge {
总结: 这一个题为什么没有很快的做出来?因为1,没有面向对象的思想,分析问题的逻辑很混乱[作的题目少],没有分而置之的思想.首先,要把问题分为若干的小函数.也就是一些小方法.大问题就是这样一个一个的小问题组合起来的,写各种方法[函数],有利于代码的重用性.在着重的提示一下,把问题分而置之.分析然后再设计各种方法.
=====================================================================
3.定义一个奇数阶二维数组,把每个元素顺序填入不同的自然数,要求行列和对角线元素相加的结果相等[九宫格问题]:
8 1 6
3 5 7
4 9 2
3. 九宫格问题:
public class ge {
public
static
void
main(String[] args) {
int
a = Integer.parseInt(args[0]);
if
(a % 2 == 0) {
System.
out
.println(
"error please enter oushu"
);
System.exit(0);
}
int
[][] s =
new
int
[a][a];
int
m = 0;
int
n = (a - 1) / 2;
for
(
int
i = 1; i < a * a; i++) {
s[m][n] = i;
m--;
n++;
if
(m == -1 && n < a) {
m = a - 1;
}
else
if
(n == a && m >= 0) {
n = 0;
}
else
if
((m == -1 && n == a) || (s[m][n] != 0)) {
m += 2;
n--;
}
s[m][n] = i + 1;
}
for
(
int
i = 0; i < a; i++) {
for
(
int
j = 0; j < a; j++) {
System.
out
.print(s[i][j] +
" "
);
}
System.
out
.println();
}
}
}
总结: 这题给了算法就好作多了