Java基础入门

118 阅读10分钟

「这是我参与2022首次更文挑战的第四天,活动详情查看:2022首次更文挑战

hello,world程序解释

    //public表示公开的
    //class表示定义一个类
    //hello表示一个类名
public class hello//表示定义一个公开的类,名字叫hello
{
    //这里代表类体
    //类体中不允许直接编写Java语句【除声明变量之外】
    public static void main(String[] args)//表示定义一个公开的静态的主方法
    {
        //这里代表方法体
        //static表示静态的
        //void表示空
        //main表示方法名是main
        //(String[] args)是一个main方法的形式参数列表
        //大写的字母必须大写
        System.out.println("hello,word");	//向控制台输出消息(打印) 
    }
}

public class和class区别

  • 一个java文件中可以定义多个class
  • 一个java文件中不一定有public的class
  • 一个class会定义生成一个xxx.class字节码文件
  • 一个java源文件当中定义公开的类话,public的class只能有一个,并且该类的名称必须和源文件的名称一致
  • 每一个class当中都可以编写main方法,都可以设置程序执行入口,想执行B.class中的main方法---java B即可
  • 每个class中必须有主方法

标识符的命名规则

  • 这是一种规则,不按规则来编译器会报错
  • 合法的标识符只能由“数字,字母,下划线_,美元符$”组成
  • 不能以数字开头
  • 严格区分大小写
  • 理论上无长度限制,但不要太长

标识符命名规范

  • 这只是一种规范,不属于语法 ,不遵守规范编译器不会报错

  • 遵循驼峰命名方式例如:

    ​ SystemService

    ​ UserService

  • 类名,接口名:首字母大写,后面每个单词首字母大写
  • 变量名,方法名:首字母小写,后面每个单词首字母大写
  • 常量名:全部大写

Java关键字

Java关键字类别Java关键字关键字含义
访问控制private一种访问控制方式:私用模式,访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)
访问控制protected一种访问控制方式:保护模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符
访问控制public一种访问控制方式:共用模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
类、方法和变量修饰符abstract表明类或者成员方法具有抽象属性,用于修改类或方法
类、方法和变量修饰符class声明一个类,用来声明新的Java类
类、方法和变量修饰符extends表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
类、方法和变量修饰符final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
类、方法和变量修饰符implements表明一个类实现了给定的接口
类、方法和变量修饰符interface接口
类、方法和变量修饰符native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
类、方法和变量修饰符new用来创建新实例对象
类、方法和变量修饰符static表明具有静态属性
类、方法和变量修饰符strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
类、方法和变量修饰符synchronized表明一段代码需要同步执行
类、方法和变量修饰符transient声明不用序列化的成员域
类、方法和变量修饰符volatile表明两个或者多个变量必须同步地发生变化
程序控制break提前跳出一个块
程序控制continue回到一个块的开始处
程序控制return从成员方法中返回数据
程序控制do用在do-while循环结构中
程序控制while用在循环结构中
程序控制if条件语句的引导词
程序控制else用在条件语句中,表明当条件不成立时的分支
程序控制for一种循环结构的引导词
程序控制instanceof用来测试一个对象是否是指定类型的实例对象
程序控制switch分支语句结构的引导词
程序控制case用在switch语句之中,表示其中的一个分支
程序控制default默认,例如:用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
错误处理try尝试一个可能抛出异常的程序块
错误处理catch用在异常处理中,用来捕捉异常
错误处理throw抛出一个异常
错误处理throws声明在当前定义的成员方法中所有需要抛出的异常
包相关import表明要访问指定的类或包
包相关package
基本类型boolean基本数据类型之一,声明布尔类型的关键字
基本类型byte基本数据类型之一,字节类型
基本类型char基本数据类型之一,字符类型
基本类型double基本数据类型之一,双精度浮点数类型
基本类型float基本数据类型之一,单精度浮点数类型
基本类型int基本数据类型之一,整数类型
基本类型long基本数据类型之一,长整数类型
基本类型short基本数据类型之一,短整数类型
基本类型null空,表示无值,不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量
基本类型true真,boolean变量的两个合法值中的一个
基本类型false假,boolean变量的两个合法值之一
变量引用super表明当前对象的父类型的引用或者父类型的构造方法
变量引用this指向当前实例对象的引用,用于引用当前实例
变量引用void声明当前成员方法没有返回值,void可以用作方法的返回类型,以指示该方法不返回值
保留字goto保留关键字,没有具体含义
保留字const保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新

八种数据类型默认值

数据类型默认值
byte,short,int,long0
float,double0.0
booleanfalse
char\u000

注:boolean只有true,false两个值

基本数据类型的转换规则

  1. 八种基本数据类型当中除布尔类型之外剩下的7种都可以互相转换

  2. 小容量向大容量转换,成为自动类型转换,容量从小到大排序:

    byte < short/char < int < long <float < double

    注:任何浮点型不管占用多少字节,都比证书容量大

    ​ char和short可表示的种类数量相同,但是char可以取更大的正整数

  3. 大容量转化成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。

  4. 当整数字面值没有超出byte,short,char的取值范围可以直接赋值给这些类型的变量

  5. byte,short,char混合运算时各自转换成int类型再做运算

  6. 多种数据类型混合运算,先转换成容量最大的那种类型在做运算

运算符

算数运算符

操作符描述例子
+加法 - 相加运算符两侧的值A + B 等于 30
-减法 - 左操作数减去右操作数A – B 等于 -10
*乘法 - 相乘操作符两侧的值A * B等于200
/除法 - 左操作数除以右操作数B / A等于2
取余 - 左操作数除以右操作数的余数B%A等于0
++自增: 操作数的值增加1B++ 或 ++B 等于 21
--自减: 操作数的值减少1B-- 或 --B 等于 19

关系运算符

运算符描述例子
==检查如果两个操作数的值是否相等,如果相等则条件为真。(A == B)为假。
!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。(A != B) 为真。
检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A> B)为假。
<检查左操作数的值是否小于右操作数的值,如果是那么条件为真。(A <B)为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。(A> = B)为假。
<=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。(A <= B)为真。

位运算符

操作符描述例子
如果相对应位都是1,则结果为1,否则为0(A&B),得到12,即0000 1100
|如果相对应位都是 0,则结果为 0,否则为 1(A | B)得到61,即 0011 1101
如果相对应位值相同,则结果为0,否则为1(A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即1100 0011
<<按位左移运算符。左操作数按位左移右操作数指定的位数。A << 2得到240,即 1111 0000
>>按位右移运算符。左操作数按位右移右操作数指定的位数。A >> 2得到15即 1111
>>>按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。A>>>2得到15即0000 1111

逻辑运算符

操作符描述例子
&称为按位与,两个操作数都为真则为真(1<2)&(3>2)为真
|称为逻辑或,两个数只要有一个真则为真(1<3)|(1>2)为真
称为逻辑非,用来反转操作数的逻辑状态!ture为假
&&称为短路与,两个操作数都为真则为真,若前面的条件已确定则后面的条件不执行,按位与与之相反
||称为短路或,两个数只要有一个真则为真,若前面的条件已确定则后面的条件不执行,逻辑或与之相反

赋值运算符

操作符描述例子
=简单的赋值运算符,将右操作数的值赋给左侧操作数C = A + B将把A + B得到的值赋给C
+ =加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C + = A等价于C = C + A
- =减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C - = A等价于C = C - A
* =乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C * = A等价于C = C * A
/ =除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C / = A,C 与 A 同类型时等价于 C = C / A
(%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数C%= A等价于C = C%A
<< =左移位赋值运算符C << = 2等价于C = C << 2
>> =右移位赋值运算符C >> = 2等价于C = C >> 2
&=按位与赋值运算符C&= 2等价于C = C&2
^ =按位异或赋值操作符C ^ = 2等价于C = C ^ 2
| =按位或赋值操作符C | = 2等价于C = C | 2

字符串连接符

操作符描述
+字符串连接符,若两边有一边是字符串则连接两边

接受用户键盘输入

第一步:创建键盘扫描机器对象

java.util.Scanner s = new java.util.Scanner(System.in);
//在结束后需要加上下面这一句
s.close();

第二步:调用Scanner对象的next()方法开始接受用户键盘输入

//输入字符
String str = s.next();
//输入数字
int num = s.nextInt();

if语句

if语句语法

if(布尔表达式){
	java语句;
	java语句;
	...
}

if else语句语法

if(布尔表达式){
	java语句;
	...
}else {
	java语句;
	...
}

判断字符串

判断字符串用equals函数语法如下

str.equals(str2)

注:一个汉字等于两个字符

switch语句

switch语句语法

switch(int/string的字面值或变量){
		case int/string的字面值或变量 :
		java语句;
		...
		case int/string的字面值或变量 :
		java语句;
		...
		default :
		java语句;
		...
}

注:1. 匹配成功的分支执行,分支当中没有“break”语句的话,直接进入下一个分支执行(不进行匹配)这种现象被称为case穿透现象【提供break;语句可以避免穿透】

  1. switch括号中只能是int/string的字面值或变量,如果是byte,short,编译器会自动转化成int,如果是long或者浮点型数据需要强制转换成int,但是可能会发生精度丢失。

case合并

int i;
switch(i){
	case 1 : case 2: case 5:case 6 :
	System.out.println("真不戳!");
}

当 i = 1,2,5,6时都可以执行,这种现象叫做case合并。

for语句

for语句语法

for(初始化表达式;布尔表达式;更新表达式)
{
	//需要重复执行的代码片段
}

注: 1. 初始化表达式最先执行,并且在整个for循环中只执行一次。

​ 2.执行顺序:判断布尔表达式-> 布尔表达式ture -> 执行循环体 -> 执行更新表达式....依次循环

​ 3.for循环嵌套for时里外变量不可相同

九九乘法表

public class jiujiu {
    public static void main(String[] args){
        for(int i=1 ;i<=9 ; i++){
            for(int j=1 ; j<=i ;j++){
                System.out.print(i + "*" + j + "=" + i*j + " ");
            }
            System.out.println(" ");
        }
    }
}