Java学习笔记2

 
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{
       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 {
       public static void main(String[] args) {
              int a; // 定义在方法中的变量为局部变量 : 局部变量必需先赋值 , 后使用 . 局部变量作用范围 :
              // 定义它的代码块 . 在一个重合的范围内 , 不允许两个局部变量发生命名冲突 .
       }
}
(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];
如何定义全局变量.
6 )字符串转换成 int 型的数据
  下面是把字符串转换成 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 {
       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();
              }
       }
}

总结: 这题给了算法就好作多了
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炼丹狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值