day01

1 helloworld

1.1 三个关键字

  • jvm:JavaVirtualMachine Java虚拟机 实现java跨平台技术 ,根据当前操作系统 执行java字节码文件

  • jre:java runtime environment java运行环境

    jre=java基础类库+jvm

  • jdk:Java development kits :java开发工具包

​ jdk=jre+java开发工具(javac.exe编译器+javadoc.exe文档生成器)
在这里插入图片描述

1.2 第一个程序

1.2.1 编辑:编写java源文件

编辑概念:写java代码 生成java源文件
编辑工具:所有支持文本的软件都可以:notepad.exe、notepad++
编辑步骤: 1创建文件:后缀名为.java
         2创建类:class 类名{}
         3类中创建主方法:public static void main(String[] s){}
         4主方法中打印输出:System.out.println("额和和");
注意事项: 1 除了""中的内容 其他都不能更改
         2 命名增加可读性+ 对其缩进
//注意1:一个文件中可以有多个类 但只能有一个public类 此public类的类名必须和文件名一致
//注意2:注释有三种
//注意3:;表示语句结束
//注意4:大括号表示范围
class HelloWorld{//1 创建类
	//2 创建主方法
    /*
      aaaa
      1111
      12222
    */
    /**
      33333
      1111
    */
	public static void main(String[] s){
		//3 打印输出语句
		 System.out.println("java43:天道酬勤 不忘初衷!");
	}
}

1.2.2 编译

编译概念:根据java源文件生成 电脑可执行的字节码文件
编译工具:javac.exe 编译器
编译命令:javac 源文件名.java
编译作用:语法检查+生成字节码文件(类名.class)

在这里插入图片描述

1.2.3 运行

运行概念:执行java程序
运行工具:java.exe 虚拟机
运行命令:java 类名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P3moinbZ-1690251998001)(imgs/image-20220829111325093.png)]

2 基础语法

2.1 关键字:

Java中被赋予特殊含义的单词或者字符
class  interface 
public protected private
byte short int long char float double boolean
true false
if while for switch case break continue 
final static abstract  void
extends implements

2.2 标识符

概念:java中所有的名字
意义:同类之间区分 方便调用
命名规则:不遵守 编译器报错
         1 由数字 字母 下划线 美元符号组成
         2 不能以数字开头
         3 不能是java关键字
         4 区分大小写
命名规范:编程习惯
        1 尽量增加可读性
        2 首字母大小写(不同标识符 要求不同)
        (类名:所有单词首字母大写:WoDeZiWoJieShao)
        (变量名:方法名:除了第一个单词 其他单词首字母大写)
        (常量:所有字母大写:单词之间用_连接)

2.3 数据类型

4种8类
整数类型:不带小数点的数字
     byte: 字节型: 注意:1 描述数据的最小单位  2 取值范围[-128,127]  
     short:短整型: 1short=2byte 注意:1 取值范围[-32768,32767]
     int:整型:  1int=4byte:注意:1 默认类型
     long:长整型: 1long=8byte: 注意: 1 long类型的常量后面加l/L     
浮点类型:带小数点的数字
     float: 单精度: 1float=4byte :注意1: 小数点有效位数6-8 2: float常量后面加f/F
     double:双精度:1double=8byte:注意1:浮点的默认类型 2 小数点后有效位数为12
字符类型:所有的符号
      char :字符型: 1char=2byte:注意1:char常量必须写在''中 2 ''中有且只有一个字符
布尔类型:只有两个结果 并且是相反的
      boolean:布尔型:1boolean=1byte 注意1:只有两个值:true/false

2.4 常量和变量

常量:运算过程中值不能更改的数据
     常量值: 1  'a'  1.1 true
     final变量:
变量:运算过程中值可以更改的数据
     步骤:先定义 再赋值 然后使用
定义变量:变量类型 变量名;
变量赋值:变量名=常量值;
使用变量:打印输出 进行运算
int i1=1,i2=2;
char c1='1',c2='2';
short s1=1,s2=2;
long l1=1L,l2=2;
double d1=1,d2=2;
float f1=1,f2=2;
   
  i1=c1+i2; // 1 通过编码表获取'1'对应的整数 49 2 拿int的49和int的2运算 得到int 51 赋值给i1
  f1=(int)(d1+f2); // 1 吧float的2.0f提升为double的2.0 2 两个double运算得到double的3.0 
                   // 3:double强制转化为int的3 4:int的3向上提升为float的3.0f 然后赋值
  f1=f1+l1; 
  d1=c1+i1+f1;
  c1=s1+s2;
  i1=c1+s1;

2.5 数据类型转换

  • 数据类型精度表
byte-short-(char)-int-long-float-double
  • 自动类型转换情况一:
概念:把低精度值赋值给高精度变量:
格式:高精度变量=低精度值;
     float f1=1;
  • 自动类型转换情况二:
概念:给byte/short/char 类型的变量赋值int常量值 自动进行范围判断 装下就转换 装不下就报错
格式: byte/short/char 类型的变量=int常量
      byte b1=1;// 00000000 00000000 00000000  00000001 --->  00000001
      int i1=1;
      b1=i1;//错误
  • 强制类型转换
概念:把给精度值强制赋值给低精度变量
格式:低精度变量=(低精度变量类型)高精度值;
     int i1=(int)1.34;
     int i=(char)(1.1+48)

2.6 运算符

算术运算符

数学中已有的:+ - * /
特有的: %  ++ -- 
        //1 算术运算符
		//1.1 + 作用1:正负
		int i1=+1;i1=-1;
		//      作用2:加减
		i1=1+1;
		//      作用3:字符串连接符
		int a=1,b=2;
		//打印a=1,b=2
		System.out.println("a=1,b=2");
		//1 区分变量(打印的是变量的值)和字符串(原封不动的内容)
		//2 字符串写在字符串中 变量的值用变量表示 之间用连接符+连接即可
		System.out.println("a="+a+",b="+b);
		//打印a=1,b=2,a+b=3
		System.out.println("a="+a+",b="+b+",a+b="+(a+b));
		
		//1.2 ++ --
		a++;//完全等价于a=(a的类型)(a+1)
		
		//1.3 %  余数的正负 取决于被除数
		//n%m= n除以m得到一个整数 除不尽的那部分
		System.out.println("4.7%2.3="+(4.7%2.3));//0.1
		System.out.println("-4.7%2.3="+(-4.7%2.3));//-0.1
		System.out.println("4.7%(-2.3)="+(4.7%(-2.3)));//0.1
		System.out.println("(-4.7)%(-2.3)="+((-4.7)%(-2.3)));//-0.1
		
		
		//判断一个数是不是水仙花数:
		//1 必须是三位数
		//2 各个位数的三次方之和等于此数: 153=1*1*1+5*5*5+3*3*3=1+125+27=153
		int n=371;
		//1 获取每一位的值
		int n1=n%10;
		int n2=n/10%10;
		int n3=n/100;
		//2 获取这三个数的三次之和
		int sumn=n1*n1*n1+n2*n2*n2+n3*n3*n3;
		//3 判断n是否等于sumn
		if(sumn==n) {
			System.out.println(n+"是水仙花数!");
		}else {
			System.out.println(n+"不是水仙花数!");
		}

赋值运算符

         // 2 赋值运算符:
		// 2.1 =
		// 给变量赋的值的类型必须和变量类型一致
		// 2.2 特有:+= -= *= /= %=
		a += b;// 等价于a=(a的类型)(a+b)
		byte b1 = 1, b2 = 2;
		b1 += b2;
		// 运算后结果的数据类型取决于精度最高的数据
		// byte,short,char不能直接参加运算 必须自动提升为int 才能运算
		b1 = (byte) (b1 + b2);// Type mismatch: cannot convert from int to byte

比较运算符

        // 3 比较运算符:结果是boolean
		// 3.1 > < >= <=
		// 3.2 != ==
		System.out.println(1 != 1);
		System.out.println(1 == 1);   

逻辑运算符

        // 4 逻辑运算符:只能操作布尔数据 而且结果也是布尔胡数据
		// 4.1 & 单 与 && 双与 and :两个都成成立 才成立
		// | 单或 || 双或 or :只要有一个成立 就成立
		// ^ 异或 :两个不同就成立
		// ! 取反
		// 注意1:双和单 结果一样
		// 注意2:双和单的区别: 双存在逻辑短路+单可以作为位运算符

		System.out.println("--测试&和&&---");
		System.out.println("true&true=" + (true & true));
		System.out.println("true&false=" + (true & false));
		System.out.println("false&false=" + (false & false));
		System.out.println("false&true=" + (false & true));
		System.out.println("true&&true=" + (true && true));
		System.out.println("true&&false=" + (true && false));
		System.out.println("false&&false=" + (false && false));
		System.out.println("false&&true=" + (false && true));
		System.out.println("--测试^---");
		System.out.println("true^true=" + (true ^ true));
		System.out.println("true^false=" + (true ^ false));
		System.out.println("false^false=" + (false ^ false));
		System.out.println("false^true=" + (false ^ true));
		
		System.out.println("--测试双的逻辑短路---");
		a = 1;
		b = 1;
		if (true && ++a != 0) {
			System.out.println("true&&a++!=0 成立");
		} else {
			System.out.println("true&&a++!=0 不成立");
		}
		System.out.println("a=" + a + ",b=" + b);

		a = 1;
		b = 1;
		if (false && ++a != 0) {
			System.out.println("false&&a++!=0 成立");
		} else {
			System.out.println("false&&a++!=0 不成立");
		}
		System.out.println("a=" + a + ",b=" + b);
		
		//逻辑短路:当通过第一个式子就知道结果时  后面的式子不再运算 直接得出结果
		
		a = 1;
		b = 1;
		if (false & ++a != 0) {
			System.out.println("false&a++!=0 成立");
		} else {
			System.out.println("false&a++!=0 不成立");
		}
		System.out.println("a=" + a + ",b=" + b);

三元运算符

格式:boolean值?值1:值2
boolean值为true 结果是值1 boolean值为false结果是值2
//5 三元运算符
int a=1,b=3,c=4;
int max;//定义变量记录大值
max=a>b?a:b;

//求三个数的大值
int max1=a>b?a:b;
int max2=max1>c?max1:c;
int max3=(a>b&&a>c)?a:(b>c?b:c);
int max4=a>b?(a>c?a:c):(b>c?b:c);

位运算符(了解)

位运算符: &  |  ^  >> <<
位运算符:操作的是数字的二进制  0是false 1是true
	//6 位运算符 了解
		//位运算符:操作的是数字的二进制  0是false 1是true
		//13: 8+4+1=1000+100+1=1101
		//1101  = 1*8+1*4+0*2+1*1 =13
		//123=1*100+2*10+3*1=
		System.out.println("13&3="+(13&3));//1
		System.out.println("17|6="+(17|6));//23
		System.out.println("17>>2="+(17>>2));//4
		System.out.println("17<<2="+(17<<2));//68

在这里插入图片描述

3 流程控制

通过java关键字来控制代码的执行顺序

3.1 选择结构

if else结构

       //1 单分支
		char sex='男';
		if(sex=='男') {
			  System.out.println("你是男生:请去对面班:sex="+sex);
		}
		if(sex=='女') {
			  System.out.println("你是女生:请来我们班:sex="+sex);
		}
		//2 双分支
		if(sex=='男') {
			  System.out.println("你是男生:请去对面班:sex=="+sex);
		}else{
			   System.out.println("你是女生:请来我们班:sex=="+sex);
		}
		//3 多分支
		float score=99;
		if(score<0||score>100) {
			System.out.println("score="+score+",成绩无效!");
		}else if(score<60) {//隐藏条件 score>=0&&score<=100
			System.out.println("score="+score+",成绩不及格!");
		}else if(score<70) {//隐藏条件:score>=60&&score<=100
			System.out.println("score="+score+",成绩及格!");
		}else if(score<80) {
			System.out.println("score="+score+",成绩良好!");
		}else if(score<100) {
			System.out.println("score="+score+",成绩优秀!");
		}else {
			System.out.println("score="+score+",成绩满分!");
		}
  • swicth
//switch
/*注意事项:1 switch表达式的值结果只能是:int String enum
		 *         2 case后面的值不能重复
		 *         3 break作用结束整个switch结构
		 *         4 default:所有的case值都不是switch的结果时 才执行default
		 * 
		 * */
//根据月份判断季节
int month=11;
//345 春  678 夏 9 10 11 秋 12 1 2 冬
switch(month) {//Cannot switch on a value of type long. Only convertible int values, strings or enum variables are permitted
    default:
        System.out.println("month="+month+",对应的季节是火星季5!");
        break;
    case 3:
        System.out.println("month="+month+",对应的季节是春季!");
        break;
    case 4:
        System.out.println("month="+month+",对应的季节是春季!");
        break;
    case 5:
        System.out.println("month="+month+",对应的季节是春季!");
        break;
    case 6:
        System.out.println("month="+month+",对应的季节是夏季!");
        break;
    case 7:
        System.out.println("month="+month+",对应的季节是夏季!");
        break;
    case 8:
        System.out.println("month="+month+",对应的季节是夏季!");
        break;
    case 9:
        System.out.println("month="+month+",对应的季节是秋季!");
        break;
    case 10:
        System.out.println("month="+month+",对应的季节是秋季!");
        break;
    case 11:
        System.out.println("month="+month+",对应的季节是秋季1!");
        //break;
    case 12:
        System.out.println("month="+month+",对应的季节是冬季2!");
        //break;
    case 1:
        System.out.println("month="+month+",对应的季节是冬季3!");
        //break;
    case 2:
        System.out.println("month="+month+",对应的季节是冬季4!");
        break;

}

month=11;
//345 春  678 夏 9 10 11 秋 12 1 2 冬
switch(month) {//Cannot switch on a value of type long. Only convertible int values, strings or enum variables are permitted
    default:
        System.out.println("month="+month+",对应的季节是火星季5!");
        break;
    case 3:
    case 4:
    case 5:
        System.out.println("month="+month+",对应的季节是春季!");
        break;
    case 6:
    case 7:
    case 8:
        System.out.println("month="+month+",对应的季节是夏季!");
        break;
    case 9:
    case 10:
    case 11:
        System.out.println("month="+month+",对应的季节是秋季1!");
        break;
    case 12:
    case 1:
    case 2:
        System.out.println("month="+month+",对应的季节是冬季4!");
        break;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值