java基础02_java基本语法

198 阅读6分钟

1.关键字和保留字

image.png

image.png

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字:goto 、const

2.标识符

起名的地方:

26字母大小写(Java敏感)、0-9、_、$。

数字不开头 不空格、不关键字保留字。

规范

  • 包名:小写 xxxyyyzzz
  • 类名、接口名:首字母大写 XxxYyyZzz
  • 变量名、方法名:第二个单词的首字母大写 xxxYyyZzz
  • 常量名:大写 XXX_YYY_ZZZ

如果不遵守,编译也可以通过(语法🆗)。但是建议遵守。

3.变量

变量先声明赋值再使用,在作用域内,同作用域不能重名

3.1分类

image.png

第四章详细看(👇)

image.png

image.png

image.png

  • float表示的数值范围比long还大

  • char=2字节 单引号。且只能放一个

    转义字符:\b退格 \n换行 \r回车 \t制表

    字符集:后续IO流继续

    A65 a97

  • boolean:true、flase

  • string

    String不是基本数据类型,属于引用数据类型。双引号

    string可以与8种基本数据类型做运算,且只能连接运算

    string之后的+都是string

       //练习1
	char c = 'a';//97   A:65
	int num = 10;
	String str = "hello";
	System.out.println(c + num + str);//107hello
	System.out.println(c + str + num);//ahello10
	System.out.println(c + (num + str));//a10hello
	System.out.println((c + num) + str);//107hello
	System.out.println(str + num + c);//hello10a

	//练习2
	//*	*
	System.out.println("*	*");            //*   *
	System.out.println('*' + '\t' + '*');   //93     //char算数
	System.out.println('*' + "\t" + '*');   //*   *  //"\t"是string。连接
	System.out.println('*' + '\t' + "*");   //51*    //先加法再连接
	System.out.println('*' + ('\t' + "*")); //*   *  //

想清楚做运算还是做连接

image.png

特别:输出3.5不带引号。此处带引号说明是字符串而不是数字

    String str2 = 3.5f + "";
    System.out.println(str2);//3.5

image.png

3.2自动类型转换

image.png

  • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。容量:数值范围大小。比如float大于long
  • byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
  • boolean类型不能与其它数据类型运算。
  • 当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型

3.3强制类型转换

  • 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。
  • 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。

boolean类型不可以转换为其它的数据类型

特殊情况

默认12345int转为long🆗;默认12.3double转为float不🆗

3.4进制

  • 2-10easy
  • 2-8 3位--1位
  • 2-16 4位--1位

4.运算符

4.1分类

  • 算术运算符: + - * / %(±看被模数) ++ -- 连接+
  • 赋值运算符:=
int n=10;
n += (n++) + (++n);// n = n + (n++) + (++n)
System.out.println(n);//32
  • 比较运算符(关系运算符):== != <= >= instanceof

    结果都是boolean类型

  • 逻辑运算符:& && | || ! ^(逻辑异或:不一样才是true)

image.png

  1. “&”和“&&”的区别:单&时,左边无论真假,右边都进行运算;

  2. 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

  3. “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

  4. 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

    理解:异或,追求的是“异”!

  • 位运算符:

image.png

int a = 8, b = 3;
System.out.println(a>>>b);//1
System.out.println(a>>>b | 2);//3

image.png

  • 三元运算符:

image.png

char x = 'x';
int i = 10;
System.out.println(true? x : i);//120  //97a
System.out.println(true? 'x' : 10);//x

/*

 * 如果其中有一个是变量,按照自动类型转换规则处理成一致的类型;
 * 如果都是常量,如果一个是char,另一个是其他,按照自动类型转换规则处理成一致的类型;
               如果一个是char,如果另一个是[0~65535]之间的整数按char处理;          
 */

4.2优先级

image.png

5.程序流程控制

顺序、分支(选择)、循环

补充 : break continue

  • break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层{}语句块

  • continue 语句

    continue只能使用在循环结构中

    continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环

    continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环

练习

1.今天是周二,100天以后是周几?

//
public class TestExer2 {
    public static void main(String[] args) 
    {
      int week = 2;
      week += 100;
      week = week % 7;
      System.out.println("100天后星期" + week);
    }
}

2.小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。

    public static void main(String[] args) 
    {
        int h = 80;
        double s = (h - 32) / 1.8;
        System.out.println(h + "华氏度,是摄氏度" + Math.round(s));
    }

3.比较

    short s1 = 1; s1 = s1 + 1;//有什么错?
    short s1 = 1; s1 += 1;//有什么错?

    //答:
    //short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
    //short s1 = 1; s1 += 1;(可以正确编译)
       

4.编写程序,从键盘接收整数参数。如果该数为1-7,打印对应的星期值,否则打印“非法参数”。

public static void main(String[] args) 
	{
		Scanner input = new Scanner(System.in);
		System.out.print("请输入星期值:");
		int week = input.nextInt();
		
		switch(week){
			case 1:
				System.out.println("星期一:Monday");
				break;
			case 2:
				System.out.println("星期二:Tuesday");
				break;
			case 3:
				System.out.println("星期三:Wednesday");
				break;
			case 4:
				System.out.println("星期四:Thursday");
				break;
			case 5:
				System.out.println("星期五:Friday");
				break;
			case 6:
				System.out.println("星期六:Saturday");
				break;
			case 7:
				System.out.println("星期天:Sunday");
				break;
			default:
				System.out.println("非法星期值");
				break;
		}
		
	
	}

5.程序输出

        public static void main(String[] args) {
		boolean x = true;
		boolean y = false;
		short z = 40;
		if ((z++ == 40) && (y = true)) {
			z++;
		}
		if ((x = false) || (++z == 43)) {
			z++;
		}
		System.out.println("z = " + z);
	}//z = 44

6.求ax2+bx+c=0方程的根.考虑几个解:a!=0, a=0 b!=0 提示1:Math.sqrt(num); sqrt指平方根。例如:求x方-4x+1=0方程的根、求x方-2x+1=0方程的根。

        /*求ax2+bx+c=0方程的根.
	  考虑几个解:a!=0, a=0 b!=0
	  提示1:Math.sqrt(num);  sqrt指平方根
	  例如:
	  求x方-4x+1=0方程的根
	  求x方-2x+1=0方程的根
	*/
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("一元二次方程:ax^2+bx+c=0");
		System.out.println("请输入参数a:");
		double a = input.nextDouble();
		System.out.println("请输入参数b:");
		double b = input.nextDouble();
		System.out.println("请输入参数c:");
		double c = input.nextDouble();
		
		if(a!=0)
		  {
			double temp = b*b - 4*a*c;
			if(temp==0)
			  {
				double x = -b/(2*a);
				System.out.println("该方程是一元二次方法,有两个相同解:" + x);
			  }
			else if(temp>0)
			  {
				double sqrt = Math.sqrt(temp);
				double x1 = (-b+ sqrt)/(2*a);
				double x2 = (-b- sqrt)/(2*a);
				System.out.println("该方程是一元二次方法,两个不同解:" + x1 +"," + x2);
			  }
			else
			   {
				  System.out.println("该方程是一元二次方法,在实数范围内无解!");
			   }
		  }
		else
		  {
			if(b!=0)
			  {
				double x = -c/b;
				System.out.println("该方程是一元一次方程,有一个解:" + x);
			  }
			else
			  {
				System.out.println("不是方程,是一个等式");
                if(c == 0)
                  {
                    System.out.println("等式成立");
                  }
                else
                  {
                	System.out.println("等式不成立");
                  }
			  }
		  }
		
		
	}

? 写一个程序,找出4位数的所有吸血鬼的数字

例如:1260=2160、 1827=2187