Java(学习笔记二,kk自用)

  • 变量与标识符
    变量分类:
    按照所属的数据类型划分:基本数据类型变量、引用数据类型变量
    按被声明的位置划分:局部变量、成员变量

标识符命名习惯:驼峰命名法

  • char在java中占用2个字节,这和C语言中不同。布尔类型(boolean)占用的字节不确定,而且默认值为false。(真实存储的时候,一般会转换成其他类型存储)

char c=97;//将打印出来字符a

  • 注意,String表示一个字符串类型,不是基本数据类型,属于引用数据类型.

  • 自动类型转换
    byte,short,int ,它们三者在计算时会转成int类型,如果把int值转换为float值,或者long转换为double值,不需要强制转换,但可能会丢失精度。
    例:
    byte b=10;
    short s=b;//可以直接转换的情况

float和double是属于近似值,而byte,char,short,int,long是属于精确值,精确值转近似值时可能会丢失精度
例:
int num=2147483000;
float num2=num;//输出结果为:2.14748301E9

所以如果用于表示货币值,不建议使用float或double

//面试题:
short s1=10;
s1=s1+1;
System.out.println(s1);
则结果为?

答:编译会报错,从int转到short可能会有损失,原因是byte、short在计算时会自动转成int类型。解决办法:将s1=s1+1变成:s1+=1即可。

  • java中的保留字为const和goto

java如何进行输入输出?
例:

package kk;
import java.util.Scanner;//接收键盘输入的工具类,也可以直接java.util.*
public class hello_world {
    public static void main(String[] args)
    {
        //创建一个键盘输入的工具类
        Scanner input=new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int x1=input.nextInt();//从键盘输入一个整数
        System.out.println(x1);
        System.out.println("请输入一个字符串:");
        String s=input.next();
        System.out.println(s);
    }
}

第一道题:求圆柱体的体积

package kk;

import java.util.Scanner;//接收键盘输入的工具类
public class hello_world {
    public static void main(String[] args){
        System.out.println("请输入圆柱体的高:");
        Scanner input=new Scanner(System.in);
        int h=input.nextInt();
        System.out.println("请输入圆柱体饿底面半径:");
        int r=input.nextInt();//注意:Input只声明了一次
        double result=3.14*(r*r)*h;
        System.out.println("圆柱体的体积是:"+result);
    }
}

关于取一个整数每一位的思考,举例:54321,最高位5的话,直接除以10000即可,中间的三位,分别先做除法再余10,最后一位直接余10即可.

面试题:&和&&的区别?
答:1.在做逻辑运算时分别计算表达式两边的结果,再做与运算;在做位运算时&表示按位与。2.&&短路与运算效率更高,先计算左边表达式,如果结果为false,那么不用计算右边表达式,直接返回false,如果左边表达式为true,再计算右边,右边也为true时,结果才为true。
(|和||的原理同上)

练习:(部分知识点)

//输入一个字符,判断是大写字母还是小写字母
/*
package kk;

import java.util.*;

public class hello_world{
    public static void main(String[] args)
    {//输入一个字符,判断是大写字母还是小写字母
        Scanner input =new Scanner(System.in);
        System.out.println("输入一个字符:");
        String s=input.next();
        char c=s.charAt(0);			//注意,如何定义char
        if(c>=65&&c<=90) {
            System.out.println("您输入的是一个大写字母");

        }else if(c>=97&&c<=122)
        {
            System.out.println("您输入的是一个小写字母");
        }else
        {
            System.out.println("输入不规范!!!");

        }
    }

};*/


//写一个程序,判断某一年是否为闰年(被4整除但不能被100整除,能被400整除)是闰年,否则是平年
/*
package kk;
import java.util.*;
public class hello_world{
    public static void main(String[] args)
    {
            Scanner input=new Scanner(System.in);
            System.out.println("请输入年份:");
            int year=input.nextInt();
            if((year%4==0&&year%100!=0)||year%400==0)
            {
                System.out.println("是闰年!");

            }else
                System.out.println("不是闰年,是平年!");

    }
};*/

/*判断今天星期几(用switch)
package kk;
import java.util.*;

public class hello_world{
    public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.out.println("今天是星期几?");
        int day=input.nextInt();
        switch(day)//switch括号内的返回值必须是int/char/short/byte,1.7之后支持字符串
        {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;

                default://注意default也可以省略
                    System.out.println("输入错误!!!");
        }
    }


};
*/

package kk;
import java.util.*;
public class hello_world{
    public  static void main(String[] args){
            Scanner input = new Scanner(System.in);
            System.out.println("这是输入的第一个数:");
            int num1=input.nextInt();
            System.out.println("这是输入的第二个数:");
            int num2=input.nextInt();
            System.out.println("请输入操作符:(+-*/)");
            String op=input.next();
            char c=op.charAt(0);
            switch(c)
        { case '+':
                System.out.println("num1+num2="+(num1+num2));
                break;
            case '-':
                System.out.println("num1-num2="+(num1-num2));
                break;
            case '*':
                System.out.println("num1*num2="+(num1*num2));
                break;
            case '/':
                System.out.println("num1/num2="+(num1/num2));
                break;

                default:
                    System.out.println("输入的操作符有误!");



        }


    }

        };

//关于switch的一点问题:
/*switch(c)
        { case '+':
                int i=10;
                System.out.println("num1+num2="+(num1+num2));
                break;
            case '-':
                int i=20;
                System.out.println("num1-num2="+(num1-num2));
                break;
            case '*':
                System.out.println("num1*num2="+(num1*num2));
                break;
            case '/':
                System.out.println("num1/num2="+(num1/num2));
                break;

                default:
                    System.out.println("输入的操作符有误!");

这里面i的作用域是整个switch的大括号内,即便我们执行的是'-'号,但是i仍可输出为20,若想缩小i的作用范围仅限于case,可以用大括号将一个case括起来,比如:
case '+':{
                int i=10;
                System.out.println("num1+num2="+(num1+num2));
                break;}

        }*/

关于java 7支持String的实现原理:
这个特性是在编译器的层次上实现的,在编译的时候,将switch转换成其他的方式,比如:
如果switch中只包含一个case语句,就可以转换成一个简单的if;如果包含一个case和一个default语句,就可以转换成if-else语句。而对于复杂的多case情况,可以转换成java 7之前的switch语句,只不过使用字符串的哈希值(整数)作为switch语句表达式的值

关于charAt方法://常用
java.lang.String.charAt()方法返回指定索引处的char值。索引范围 是从0 到length() - 1。
对于数组的索引,序列的第一个char值是在索引为0,索引1,以此类推。。

循环类的练习:

//计算阶乘,注意sum定义的初值是1而不是0
package kk;
import java.util.*;
public class hello_world{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int n=input.nextInt();
        int sum=1;
        int i=1;
        while(i<=n){
            sum*=i;
            i++;
        }
        System.out.println("阶乘为:"+sum);

    }

};

//java阶乘求和,以上面的例子为引子
package kk;

import java.util.*;
public class hello_world{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int n=input.nextInt();
        int sum=0;//记录总和
        int i=1;
        do{
            int j=1;
            int jc=1;
            while(j<=i){
                jc*=j;
                j++;
            }
        sum+=jc;
            i++;
        }while(i<=n);
        System.out.println("阶乘之和为:"+sum);

    }

};


//多重循环打印
//打印左三角形
/*
package kk;
import java.util.*;
public class hello_world{
    public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.out.println("输入层级数字n:");
        int n=input.nextInt();
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++) {
                System.out.print("*"); //注意,是print,不要用成了println
            }
            System.out.println();//不要忘记每行要换行
        }


    }
};*/


//打印九九乘法表
/*
package kk;
import java.util.*;
public class hello_world{
    public static void main(String[] args)
    {
        //Scanner input=new Scanner(System.in);
        System.out.println("九九乘法表如下:");
        for(int i=1;i<=9;i++)
        {
            for(int j=1;j<=i;j++)
            {
                System.out.print(j+"*"+i+"="+i*j+" ");

            }
            System.out.println();

        }

    }
};*/


//打印右三角形
/*
package kk;
import java.util.*;
public class hello_world{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.println("输入层级数字:");
        int n=input.nextInt();
        for(int i=1;i<=n;i++)
        {

            for(int j=n;j>0;j--)
            {if(j<=i)
                System.out.print("*");
            else
                System.out.print(" ");
            }
            System.out.println();
        }
    }

};*/
//打印等腰三角形
/*
package kk;
import java.util.*;
public class hello_world{
  public static void main(String[] args){
      Scanner input=new Scanner(System.in);
      System.out.println("输入层数:");
      int n=input.nextInt();
      for(int i=1;i<=5;i++)
      {
          for(int j=i;j<5;j++)
              System.out.print(" ");
          for(int j=1;j<=i*2-1;j++)
              System.out.print("*");
          System.out.println();

      }


  }

};*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值