java基础

    xiaoxiao2022-07-14  157

    文章目录

    Day11.1 源文件组成部分1.2 输出语句1.3 注释1.4 public class和class的区别 Day22.1 CLASSPATH字节码文件路径配置claspath 2.2 关键字2.3 标识符标识符命名规则标识符命名规范 2.4 字面值2.5 进制以及进制之间的转换2.6 字符编码2.7 变量常用的数据类型变量的操作步骤 2.8 转义序列符2.9 变量分类变量的内存分析 2.10 基本数据类型2.11 类型之间的转换 Day33.1 类型转换的6条规则3.2 算术运算符:3.3 连接运算符:+3.4 赋值运算符: =3.5 关系运算符:3.6 逻辑运算符:3.7 三目运算符:3.8 键盘接收用户输入 Day44.1 程序流程控制的三大结构4.2 if选择结构4.3 if else选择结构4.4 多重if选择结构4.5 if嵌套4.6 switch case4.7 多重if和switch case区别

    Day1

    1.1 源文件组成部分

    编写类,也叫外部结构编写main方法,也叫主方法或程序的入口 注意: 编写在类中在一个类中main方法是可有可无的如果编写main方法,则在一个类中最多有一个 编写代码 注意: 暂时将代码写在入口处可以在入口中编写N条语句,语句也就是以英文分号结束建议:一行编写一条语句

    1.2 输出语句

    System.out.print("编写大小写字母、汉字、数字、特殊符号。但是输出后不换行"); System.out.println("") // 表示空一行 System.out.println("输出后换行:先输出后换行");

    1.3 注释

    作用:解释说明,在程序中并不运行目的:增加程序的可读性注释分类:  单行注释://  多行注释:/* 内容 /  文档注释:/* 注释内容 */

    1.4 public class和class的区别

    一个类前面的public是可有可无的如果一个类使用public修饰则文件名必须与类名,一致如果一个类前面没有使用public修饰,则文件名和类名可以不一致,当编译成功后会生成对应类名的字节码文件(.class)一个类中的main方法是可有可无的,如果没有编写main方法编译成功,但是不能运行在一个源文件编写任意多个类,当编译成功后会自动生成对应类的个数的字节码文件,并可以运行每个字节码文件(必须保证有入口:main方法)在一个源文件中,最多有一个类前面使用public修饰

    Day2

    2.1 CLASSPATH

    字节码文件路径

    注意:当在默认情况下,运行每个字节码文件时在当前目录下找,如果找到则运行,否则报错

    配置claspath

    临时配置classpath 1.使用set命令完成临时配置classpath: set classpath=F:\javacourse\javalearning\src\javapack找到运行,找不到就报错; set classpath=F:\javacourse\javalearning\src\javapack;找到就运行,找不到就在当前目录下找,找到运行找不到报错; set classpath=F:\javacourse\javalearning\src\javapack;F:\javacourse从前往后找 2.使用set命令完成查看c是否lasspath配置:set classpath 3.使用set命令完成删除classpath配置:set classpath= 永久配置classpath 永远去你配置的路径找,不建议配置永久classpath

    2.2 关键字

    在java中具有特殊意义的,全部小写 如:class,public,static,void…

    2.3 标识符

    也就是名字,对类名、变量名、方法名、参数名的修饰

    标识符命名规则

     以字母、下划线或$开头,其后可以是字母、数字、下划线或美元符号。区分大小写,不能使用关键字

    标识符命名规范

    建议:见名知意,就是说最好编写单词,如name,age建议:类名的每个单词首字母大写,如Hello,HelloWorld,Student建议:变量名称、方法名称、参数名称采用驼峰命名法,如,age,getInfo建议:标识符长度不要超过15个字符,如:HelloWorld,args,avg

    2.4 字面值

    整数类型字面值:100,9,-1,0浮点类型字面值:0.1,3.14159,-98.2字符串类型字面值:必须使用英文双引号引起来,如"你好"字符类型字面值:‘a’,‘1’,‘男’布尔类型字面值:表示只有两个取值,分别是true,false

    2.5 进制以及进制之间的转换

    常用进制:二进制(0,1),八进制(0-7),十进制(0-9),十六进制(0-9,A-F)

    2.6 字符编码

    按某种格式某种规定将数据存在计算机中

    常用的字符编码:

    ASCII:‘a’--------->97 ‘b’------------->98 ‘A’------>65 ‘0’------->48… iso8859-1:西欧语言编码,兼容ASCII码 GBK/GB2312:中文编码 Unicode:统一全球所有国家的文字  常用的有:utf-8 utf-16 utf-32  注意:java源代码采用unicode编码  乱码、编码、解码

    2.7 变量

    变量: 存放数据,且该变量中的数据时可以发生改变的

    常用的数据类型

      整数类型int,浮点类型double,字符串类型string,字符类型char,布尔类型Boolean

    变量的操作步骤

    声明变量,即确定当前变量存放数据的类型 语法格式:数据类型 变量名称; 如,int a赋值,也就是将=右侧值赋给等号左边的变量名称 语法格式:变量名称=值;如a=18使用,暂时使用输出变量的值 class Var{ public static void main(String[] args){ //变量操作步骤 //第一步,声明变量 int a; double b; String c; //第二步,赋值 a = 100; b = 3.14; c = "北京市"; //第三步,使用 System.out.println(a); System.out.println(b); System.out.println(c); } }

    声明的同时完成赋值: 语法格式:数据类型 变量名称 = 值

    class Var01{ public static void main(String[] args){ //优化Var代码,在声明的同时完成赋值 //第一步,声明变量并且赋值 int a = 100; double b = 3.14; String c = "北京市"; //第二步,使用 System.out.println("a = "+ a); // +表示连接 System.out.println("b = "+ b); System.out.println("c = "+ c); } }

    多个变量类型相同,可以一次声明多个变量,之间使用逗号隔开:

    class Var02{ public static void main(String[] args){ //将0.1,99.87,-1,59.9存放在变量中,并输出变量的值 //如果有多个变量类型相同,可以一次声明多个变量,之间使用逗号隔开 double a = 0.1,b = 99.87,d = 59.9; int c = -1; //第二步,使用 System.out.println("a = "+ a + "\nb = "+b+"\nc = "+c+"\nd = "+d); } }

    2.8 转义序列符

    转义符含义\n换行符\t制表符\\\\""\'’\u0000Unicode转义符 class Var03{ public static void main(String[] args){ System.out.println("Hello\nWorld");//换行符 System.out.println("Hello\n\nWorld"); System.out.println("Hello\tWorld");//水平制表符 System.out.println("F:\\学习视频\\Java视频");//F:\学习视频\Java视频 System.out.println("\"F:\\学习视频\\Java视频\"");//"F:\学习视频\Java视频" System.out.println("\'F:\\学习视频\\Java视频\'"); System.out.println("'F:\\学习视频\\Java视频'");//'F:\学习视频\Java视频' System.out.println("Hello\u0000World");//Hello World System.out.println("Hello\u2605World");//Hello★World } }

    2.9 变量分类

    按声明位置(作用范围)分为: 局部变量:在方法中声明的,如main 全局变量:在类中声明,class下

    按数据类型范围: 基本数据类型变量:在内存中存放真正的值 引用数据类型变量:在内存中存放地址(引用)

    变量的内存分析

    1.当运行程序时,在内存中JVM会自动分配空间

    2.内存中包含  栈:存放方法以及方法中的局部变量  堆:存放方法对象  方法区:代码片段、常量池、静态属性

    class Var04{ public static void main(String[] args){ int i; double j; i = 123; String s; char ch; ch = '男'; j = 3.14; s = "李四"; } }

    内存分析图: 结论: 基本数据类型的变量 在内存中存放真正的值,比如int、char、double

    引用数据类型变量 在内存中存放地址,比如:String

    2.10 基本数据类型

    又分为4大类共计8种

    整数类型: byte,short,int,long

     整数类型中默认为int  整数类型各自取值范围

    类型占用存储空间存储范围byte1字节-128~127short2字节 [ − 2 15 , 2 15 − 1 ] [-2^{15},2^{15}-1] [215,2151]int4字节 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1] [231,2311]long8字节 [ − 2 63 , 2 63 − 1 ] [-2^{63},2^{63}-1] [263,2631] class Var05{ public static void main(String[] args){ //byte byte a = 1;//注意:在java中,当对byte,short,char类型赋值,若没超范围则直接赋值 a = 5; // a = 128; // 超过了范围 System.out.println("a = "+a); //long long d = 6; d = 123456; // d = 123456789009;//出现编译错误,因为默认类型为int d = 123456789009L;//就变成了long,l或L } }

    浮点类型: float,double(默认)

    类型占用内存空间存储范围float4字节-3.404E38~3.404E38double8字节-1.789E308~1.789E308 class Var06{ public static void main(String[] args){ //浮点类型 double x = 0.1; x = 999.99; System.out.println("x="+x); // float y = 0.87;//取值大的类型不能直接给小的赋值 float y = 0.87f;//解决办法1 float y = (float)0.87;//解决办法2:强制类型转换 } }

    字符类型: char

    一次只能存放一个,并且使用英文的单引号引起来一个汉字表示一个字符整数类型和字符类型是可以相互转换的字符类型取值范围0------>65535占两个字节 class Var07{ public static void main(String[] args){ //字符类型 char ch = 'a'; ch = '好'; ch = 100;//注意整数值直接给字符赋值,存放的是ASCII码对应的字符 // ch = -1;//注意字符类型是有取值范围的:0---->65535 System.out.println("ch = "+ch); int i = 6; i = 'a';//字符也可以给int赋值,存放的是对应的ASCII码值 System.out.println("i = "+i); } }

    布尔类型: boolean

    布尔类型只有两种取值,分别是true、false布尔类型占一个字节 class Var08{ public static void main(String[] args){ //布尔类型 boolean x = true; System.out.println("x = "+x); } }

    2.11 类型之间的转换

    强制类型转换:也叫显式类型转换  当取值范围大的类型赋给取值范围小的类型,必须进行强制类型转换,但是可能存在精度损失,3.14------->3自动类型转换:也叫隐式类型转换  当取值范围小的类型赋给取值范围大的类型 class Var09{ public static void main(String[] args){ //自动类型转换也叫隐式类型转换 byte a = 1; int b = a;//构成自动类型转换 float c = a;//1.0 int i = (int)3.14;//构成强制类型转换 } }

    Day3

    3.1 类型转换的6条规则

    基本数据类型中除了boolean类型以外,剩余7种类型可以进行相互转换当取值范围小的类型赋值给取值大的类型,构成自动类型转换,也叫隐式类型转换 byte,short,char,int,long,float,double当取值范围大的类型不能直接给类型小的赋值,则必须强制类型转换,但可能有精度损失当对byte,short,char类型赋值时,如果没超过该类型取值范围则可以直接赋值当对byte,short,char类型进行混合运算时,先转为int类型再进行计算当多种数据类型混合,先转为取值范围大的类型再进行计算 public class Datatype { public static void main(String[] args){ byte a = 3; short b = a; int c = a + b; System.out.println("c="+c); int i = 5; long j = 6; double k = 1.2; double x = i+j+k; } }

    3.2 算术运算符:

    + - * / %(求余,取模) ++ --

    public class Datatype { public static void main(String[] args){ //当+两边操作数都是数值类型时,则做加法运算 System.out.println(10 + 20);//30 System.out.println(10 + 20.0);//30.0 int a = 3,b = 4; int sum = a + b; double k = 1.2; //当+两边操作数中有一个为非数值型,则做连接 System.out.println("sum="+sum);//sum=7 System.out.println("sum="+a +b);//sum=34 System.out.println("sum="+(a+b));//sum=7 //-,必须保证两个操作数都是数值类型 System.out.println(10-20); System.out.println(6-4.3); int x = 5,y=6; int z=x-y; System.out.println("z="+z);//z=-1 System.out.println("z="+(x-y));//z=-1 //* System.out.println(5*6); System.out.println(5.0*6); int m=3,n=4; int l = m*n; System.out.println("l="+l);//12 System.out.println("l="+m*n);//12 System.out.println(10/2);//5 System.out.println(10/3);//3 System.out.println(7/2.0);//3.5 System.out.println("s结果="+20/6);//3 System.out.println(10%5);//0 System.out.println(9%3.0);//0.0 System.out.println(4%6);//4 System.out.println(0%10);//0 System.out.println(6%0);//除数不能为0 } }

    综合案例:

    class Operator{ public static void main(String[] args){ //练习:计算123各个位之和 int num=123; int gw=num%10; int sw=num/10%10; int bw=num/100; int sum=gw+sw+bw; System.out.println("sum="+sum);//sum=6 } }

    ++ ++:表示自身加一   前置++:将++编写在变量名称前面,例如++a;先自身加1再做其他运算   后置++:将++编写在变量名称后面,例如a++;先做其他运算再加一

    --

    –:自身减一,也分为前置减减和后置减减

    class Operator01{ public static void main(String[] args){ //++ int a = 3; int b = ++a; System.out.println("a="+a+"\nb="+b);//a=4,b=4 int x = 5;/* int y = x++; System.out.println("x="+x+"\ny="+y);//x=6,y=5 */ int z = x++ +2; System.out.println("x="+x+"\nz="+z);//x=6,z=7 } }

    3.3 连接运算符:+

    求和、连接

    class Operator02{ public static void main(String[] args){ int a = 12; int b = 3; String s =""+a+b;//有非数值就是拼接 System.out.println("s="+s);//s=123 } }

    3.4 赋值运算符: =

    扩展赋值运算符:+=,-=,*=,/=

    class Operator03{ public static void main(String[] args){ int x = 5; x += 0.5;//自动类型转换。x=x+0.5会出现编译错误。 System.out.println("x="+x);//x=5 int a = 123,s=0; s = s*10+a%10;//s=3 //s *= 10+a;//s=s*(10+a) System.out.println("s="+s); } }

    3.5 关系运算符:

    优先级别:算术运算符>关系运算符>赋值运算符

    class Operator04{ public static void main(String[] args){ //关系运算符,结果为布尔类型的值 System.out.println(1>2); //false System.out.println(10>9); //true System.out.println(5 != 3); //true //优先级别:算术运算符>关系运算符>赋值运算符 System.out.println(9 % 2==0); //false System.out.println(2 + 3/6 <= 4*2%5);//true,2<=3 boolean b = 7/4+5%2 == 16/8-5*2%3;//false } }

    3.6 逻辑运算符:

    逻辑与&,逻辑或|,逻辑异或^,逻辑非!,短路与&&,短路或||

    逻辑异或: 当两个条件的值不同时,则结果为true,否则为false

    逻辑非!: 对布尔类型取反

    class Operator05{ public static void main(String[] args){ //逻辑运算符 System.out.println(9>1 & 0 != 1); //true System.out.println(3 <= 1 & 100 > 10);//false System.out.println(8 != 9 ^ 12 >10);//false System.out.println(!false);//true System.out.println(!(1>9));//true //优先级别:算术运算符>关系运算符>逻辑运算符 System.out.println(9/6 -4%2 > 0 & 18%9 == 0);//true //短路与和逻辑与运行结果一样,执行过程不同 System.out.println(3>19 && 0<1);//第一个为false就为false,否则继续判断 System.out.println(3>19 & 0<1);//每一个都要判断 //短路或和逻辑或运行结果一样,短路或第一个结果为true,直接输出true System.out.println(1 != 2 || 55>66);//true System.out.println(1 != 2 | 55>66);//true } }

    3.7 三目运算符:

    也叫条件运算符: 条件 ? 代码1:代码2

    class Operator06{ public static void main(String[] args){ //三目运算符 String s = 10>20 ? "大于":"不大于"; System.out.println("s="+s);//s=不大于 int num = -3; int i = num > 0 ? 1 : num < 0 ? -1 : 0;//三种情况嵌套 System.out.println("i="+i);//i=-1 } }

    3.8 键盘接收用户输入

    源文件首行输入:

    package day03; import java.util.Scanner; class Input07{ public static void main(String[] args){ //输入一个数并将概数输出 //第二步:创建Scanner对象 Scanner input = new Scanner(System.in); //第三步:友好提示 System.out.println("请输入一个数:"); //第四步:键盘输入 int num = input.nextInt();//等待接收用户键盘输入值,回车键结束 System.out.println("num="+num); } } class Input08{ 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(); int sum = num1 + num2; System.out.println(num1 + "+" + num2 + "=" + sum); } }

    输入学生信息

    class Input09{ public static void main(String[] args){ //输入某个学生的信息(姓名,年龄,性别,成绩,现住址,婚否),输出所有信息 Scanner input = new Scanner(System.in); System.out.print("请输入姓名:"); String name = input.next();//注意:在java中,键盘接收字符串类型时没有nextString(),而使用的是next() System.out.print("请输入年龄:"); int age = input.nextInt(); System.out.print("请输入性别:"); String s = input.next();//先接收字符串类型,然后再字符串获取第0个位置的值,则使用charAt(0) char sex = s.charAt(0); System.out.print("请输入成绩:"); double score = input.nextDouble(); System.out.print("请输入现住址:"); String address = input.next(); System.out.print("请输入现婚否(true表示已婚,false表示未婚):"); boolean isFlag = input.nextBoolean(); System.out.println("\n学生信息如下:"); System.out.println("姓名:"+name+"\n年龄:"+age+"\n性别:"+sex+"\n成绩:"+score+"\n现住址:"+address+"\n婚否:"+isFlag); } }

    Day4

    4.1 程序流程控制的三大结构

    顺序结构: 按顺序逐行进行执行 选择结构: 循环结构:

    4.2 if选择结构

    语法格式:

    if (条件) { 代码块 }

    4.3 if else选择结构

    if (条件) { 代码块1 }else{ 代码块2 }

    4.4 多重if选择结构

    当做两种或两种以上的情况时,则可以使用多重if选择结构完成

    if(条件1){ 代码块1 }else if(条件2){ 代码块2 } class If02 { public static void main(String[] args){ //练习:加入张三参加java考试,判断如果在95分以上有奖励,否则发红包 Scanner input = new Scanner(System.in); System.out.print("请输入成绩:"); double score = input.nextDouble(); /* 法一:使用两个if块 if(score>95){ System.out.println("有奖励"); } if(score<=95){ System.out.println("发红包"); } */ /* 法二:使用if else if(score>95){ System.out.println("有奖励"); }else{ System.out.println("发红包"); } */ /* 法三:使用三目运算符完成 System.out.println(score>95 ? "有奖励" : "发红包"); */ // 法四:多重if if(score>95){ System.out.println("有奖励"); }else if(score<=95){ System.out.println("发红包"); } } }

    练习:根据输入的年龄,输出老年,中年,青年还是少年

    1.注意条件的顺序 2.注意最后else(可省略)

    class If03 { public static void main(String[] args){ //练习:根据输入的年龄,输出老年,中年,青年还是少年,注意条件的顺序 Scanner input = new Scanner(System.in); System.out.print("请输入年龄:"); int age = input.nextInt(); if(age >= 55){ System.out.println("老年"); }else if(age >= 30){ System.out.println("中年"); }else if(age >= 18){ System.out.println("青年"); }else if(age < 18 && age > 0){ System.out.println("少年"); } System.out.println("错误的输入"); } }

    练习:判断一个数是奇数还是偶数

    class If04 { public static void main(String[] args){ //练习:判断一个数是奇数还是偶数 Scanner input = new Scanner(System.in); System.out.print("请输入一个数:"); int num = input.nextInt(); //判断当前数num是否是奇数还是偶数 if(num % 2 == 0){ System.out.println(num+"是偶数"); }else{ System.out.println(num+"是奇数"); } } }

    4.5 if嵌套

    if(){ if(){ }else{ } }else if(){ }

    练习:判断一个三位正整数是否为水仙花数

    class If05 { public static void main(String[] args){ //练习:判断一个三位正整数是否为水仙花数 Scanner input = new Scanner(System.in); System.out.print("请输入一个数:"); int num = input.nextInt(); //判断当前数num是否是三位正整数 if(num >= 100 && num <= 999){ //获取各个位上的数 int bw = num/100,sw = num%100/10,gw = num%10; //计算各个位的立方和 int sum = bw*bw*bw+sw*sw*sw+gw*gw*gw; //判断是否相等 if(sum == num){ System.out.println(num+"是水仙花数"); } System.out.println(num+"不是水仙花数"); }else{ System.out.println(num+"不是三位正整数"); } } }

    字符串进行比较

    案例:第一名奖励10w,第二名奖励5w,第三名奖励2w,其他情况不奖励

    class If06 { public static void main(String[] args){ //练习:输入名次输出奖励 Scanner input = new Scanner(System.in); System.out.print("请输入名次:"); String info = input.next(); /* if(info == "第一名"){ System.out.println("奖励10w"); }else if(info == "第二名"){ System.out.println("奖励5w"); }else if(info == "第三名"){ System.out.println("奖励2w"); }else{ System.out.println("对不起,没有任何奖励"); } */ //java中使用==比较的是地址是否一致,如果在字符串中比较必须使用equals //当字符串进行比较内容时,建议固定值编写在前面 if("第一名".equals(info)){ System.out.println("奖励10w"); }else if("第二一名".equals(info)){ System.out.println("奖励5w"); }else if("第三名".equals(info)){ System.out.println("奖励2w"); }else{ System.out.println("对不起,没有任何奖励"); } } }

    4.6 switch case

    当做等值操作时,可以使用switch case 语法格式:

    switch(表达式){ case 常量值1: 操作1; break; case 常量值2: 操作2; break; default: }

    注意:

    表达式可以是byte、short、int、char类型,在JDK7.0及以后还可以是String类型、枚举在switch中编写任意多个case常量值类型必须与表达式类型一致当遇到break则执行switch case外面的语句default可有可无,如果有一个switch只有一个 class Switch07 { public static void main(String[] args){ //练习:输入名次输出奖励 Scanner input = new Scanner(System.in); System.out.print("请输入名次:"); String info = input.next(); switch(info){ case "第一名": System.out.println("奖励10w"); break;//表示中断,当遇到break则执行switch case外面的语句 case "第二名": System.out.println("奖励5w"); break; case "第三名": System.out.println("奖励2w"); break; default: System.out.println("对不起,没有任何奖励"); break; } } }

    常见的注意事项:

    case后面顺序可以任意default位置也可以任意,建议在最后面break可有可无,当没有break则从当前第一个匹配的case一直向下执行(就是穿透)。因此根据题意适当添加breakcase也可以合并 class Switch08 { public static void main(String[] args){ //练习:输入每天该做的事情 Scanner input = new Scanner(System.in); System.out.print("请输入字符类型星期(一~日):"); char week = input.next().charAt(0); switch(week){ case '一': case '二': case '四': case '六': System.out.println("学习"); break; case '三': case '五': System.out.println("自习"); break; case '日': System.out.println("休息"); break; } } }

    4.7 多重if和switch case区别

    多重if:可以做等值操作,也可以做区间操作 switch case:只能做等值操作

    最新回复(0)