Java学习日记-2

一、Java基础语法

1.注释、标识符、关键词

1.1注释  

让书写注释成为一个非常好的习惯

单行注释  hello world  //这是一个问好


多行注释  /* 我
            你
            他   */


文档注释  /**
           *@Author  林
           */

1.2标识符

Java 中所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

*一个合法的标识符只能由“数字、字母、下划线_、美元符号$”组成,不能含有其他的符号。
*不能以数字开头
*严格区分大小写
*关键字不能做标识符
*理论上无长度限制,但是最好不要太长

遵循驼峰规则

例如:SystemService      UserService     CustomerService

1.3关键词

常用关键词
abstract表明类或者成员方法具有抽象属性
assert断言,用来进行程序调试
boolean基本数据类型之一,声明布尔类型的关键字,占1位只有true和false
break提前跳出一个块
byte

基本数据类型之一,字节类型,占1个字节符,-127~128

case用在switch语句之中,表示其中的一个分支 catch 用在异常处理中,用来捕捉异常
char基本数据类型之一,字符类型,占2个字节符
class声明一个类
const保留关键字,没有具体含义
continue回到一个块的开始处
default

默认,例如,用在switch语句中,表明一个默认的分支。

Java8 中也作用于声明接口函数的默认实现

do用在do-while循环结构中
double基本数据类型之一,双精度浮点数类型,占8个字节符
else用在条件语句中,表明当条件不成立时的分支
enum枚举
extends

继承,表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;

对于接口,可以是另一个接口

final

用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,

或者成员域的值不能被改变,用来定义常量

finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float基本数据类型之一,单精度浮点数类型占4个字节符
for一种循环结构的引导词
goto保留关键字,没有具体含义
if条件语句的引导词
implements表明一个类实现了给定的接口
import表明要访问指定的类或包
instanceof用来测试一个对象是否是指定类型的实例对象
int基本数据类型之一,整数类型占4个字节符
interface接口
long基本数据类型之一,长整数类型占8个字节符
native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new用来创建新实例对象
package
private一种访问控制方式:私用模式
protected一种访问控制方式:保护模式
public一种访问控制方式:共用模式
return从成员方法中返回数据
short基本数据类型之一,短整数类型占2个字节符
static表明具有静态属性
strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super表明当前对象的父类型的引用或者父类型的构造方法
switch分支语句结构的引导词
synchronized表明一段代码需要同步执行
this指向当前实例对象的引用
throw抛出一个异常
throws声明在当前定义的成员方法中所有需要抛出的异常
transient声明不用序列化的成员域
try尝试一个可能抛出异常的程序块
void声明当前成员方法没有返回值
volatile表明两个或者多个变量必须同步地发生变化
while用在循环结构中

2.强制转换

由于Java是强类型语言,所以进行有些运算的时候,需要用到类型转换:

低                                                                                                                             高

byte  ——>  short  ——>  char  ——> int  ——>  long  ——>  float   ——> double


强制转换(高转低)

数字之间
short s = 100;
int i = s; // 自动类型转换,安全
 
int j = 30000; // 一个大于short类型能表示的最大值的int
short k = (short) j; // 强制类型转换,可能导致数据丢失
数字字符之间
int c=23456;
char d=(char) c; //将int类型的c强转成char类型的d
System.out.println(d); //并且能够解析输出

注意点:
1、强制类型转换可能导致溢出或损失精度
2、在把容量大的类型转换为容量小的类型时必须使用强制类型转换
3、浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
4、不能对布尔值进行转换
5、不能把对象类型转换为不相干的类型

自动转换(低转高)

  整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算

        char Value1 ='a';
		int Value2=Value1+10;
		System.out.println(Value2);//107

自动转换有以下规律:

1、小的类型自动转化为大的类型
2、整数类型可以自动转化为浮点类型,可能会产生舍入误差
3、字符可以自动提升为整数

二、字面值、变量、常量、作用域

1.字面值

字面值 就是数据。

注意:
Java语言中所有字符串型字面值必须用双引号括起来,双引号是半角。  eg:“abc”、“张广荣” 
Java语言中所有字符型字面值必须用单引号括起来,单引号是半角。      eg:‘A’、‘人’ 

2.变量

变量是内存中存储数据的最基本的单元。,包含三部分:数据类型、名称、字面值【数据】。

注意:
每个变量都有类型,类型可以是基本类型,也可以是应用类型。  
变量名必须是合法的标识符。

变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

2.1访问变量的两种形式

第一种:读取变量中保存的具体数据 get/获取
第二种:修改变量中保存的具体数据 set/设置
i=10; //set
System.out.println(i); //get

3.变量作用域

局部变量

块作用域(Block Scope)

块作用域是指在大括号 {} 内定义的变量的作用域。变量只在其定义的块内可见和有效,包括循环、条件语句和代码块。也是变量的生命周期。

 class MyClass {
    public void myMethod() {
        // 局部变量:必须声明和初始值化
        int localVar = 100;
        System.out.println(localVar);
    }
}
 
public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.myMethod(); // 输出:100
 
        // System.out.println(localVar); // 错误,localVar在myMethod方法完成调用后就会被销毁
    }
}

类变量/静态变量

方法作用域(Method Scope)

方法作用域指的是在方法内定义的变量的作用域。变量在整个方法内可见和有效。

class MyClass {
    // 静态变量
    private static int staticVariable = 0;
 
    public MyClass() {
        staticVariable++;
    }
 
    public void printStaticVariable() {
        System.out.println(staticVariable);
    }
}
 
public class Main {
    public static void main(String[] args) {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();
 
        obj1.printStaticVariable(); // 输出:2
        obj2.printStaticVariable(); // 输出:2
    }
}

静态变量是使用static关键字声明的类变量。它们属于整个类,而不是任何特定实例。所有实例共享同一个静态变量。类的静态变量在这个类的每一个方法中都能访问

实例变量/全局变量

类作用域(Class Scope)

类作用域指的是在类中定义的成员变量的作用域。成员变量在整个类内可见和有效。

class Person {
	//全局变量,类的属性
	String name;
	int age;
 
	//构造方法
	public Person(String name, int age) {
		this.name = name;//在每个方法中都能访问到这个全局变量
		this.age = age;//在每个方法中都能访问到这个全局变量
	}
	//获取年龄
	public int getAge() {
		return age;//在每个方法中都能访问到这个全局变量
	}
	//设置年龄
	public void setAge(int age) {
		this.age = age;//在每个方法中都能访问到这个全局变量
	}
	//获取名字
	public String getName() {
		return name;//在每个方法中都能访问到这个全局变量
	}
	//设置名字
	public void setName(String name) {
		this.name = name;//在每个方法中都能访问到这个全局变量
	}
}

因此,全局变量即使不进行数值初始化,也能访问获取来输出一个值,但布尔类型函数只能输出false,另外除了基本类型外,未初始化输出则为默认值null。

4.常量

初始化后不能再改变值,是一种特殊的变量,值被设定后,再程序运行过程中不允许被改变。

final  数据类型 常量名=值;

final double PI=3.14;

一般常量名使用大写字符。

三、运算符

1.算术运算符

+求和        eg:3+2=5
-求差        eg:5-2=3
*求积        eg:3*2=6
/求商        eg:8/4=2
%取余数(求模)        eg:9%4=1
++自加        ++a:先自增1,再进行运算;a++:先运算,再自增1
- -自减        - -a:先自增1,再进行运算;a- -:先运算,再自增1

2.关系运算符

>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于
instanceof

引用类型变量(object) instanceof 类(class)     

判断前面的对象是否属于后面的类,或者属于其子类; 是返回true,不是返回false

3.逻辑运算符

逻辑与 &&  

表达式1 && 表达式2,并且左右两边的表达式的结果必须是Boolean类型的。

并且在逻辑与表达式中含有一个短路现象,意思就是如果表达式1为真,那么表达式2才会执行。也就是说如果表达式1是假的,那么表达式2是不会执行的,直接跳过执行表达式2直接得出结果。

全真则真,全假则假,一真一假为假

逻辑或 ||

表达式1 || 表达式2,并且左右两边的表达式的结果必须是Boolean类型的。

逻辑或操作符也含有短路现象,但是逻辑或和逻辑与的短路现象不一样,当表达式1为真时,表达式2不在执行,直接输出结果;表达式1为假时,表达式2执行。

全假为假,其余为真

逻辑非 !

逻辑非很好理解,就是取反的意思,假的变成真的,真的变成假的

但是Java的逻辑非和C语言的逻辑非不太一样,Java的逻辑非的参数只能对结果是Boolean类型的,参数不可以是变量,但是C语言的可以。

4.位运算符

位运算符主要有:& 、 | 、^

 Java中数据存储的最小单位是字节,数据操作的最小单位是比特位,字节是最小的存储单位,一个字节由8个比特位组成,多个字节组合在一起可以表示不同的数据类型。

按位与&

如果两个二进制位都是1,那结果就是1,否则为0;

		int a = 10;
        int b = 5;
        System.out.println(a & b);

按位或|

如果两个二进制位都是0的话,结果就为0,否则为1.

		int a = 10;
        int b = 5;
        System.out.println(a | b);

按位异或^

如果两个数字的二进制位序列相同,那么结果为0,如果二进制位不同则结果为1

        int a = 13;
        int b = 11;
        System.out.println(a ^ b);

按位取反~

按位取反包括符号位也会取反,也就是说,按位取反有正负数转换的效果。

        int a = 13; //二进制 为0000 1101
        System.out.println(~a); /*在这个过程中首先对原码进行取反得到补码
                                  1111 0010,最大值的1代表负号
                         其次对所得到的补码进行第二次取反: 0000 1101 
                         最后得到的反码+1,并添上负号代表: 1 1110
                        最高位1依旧代表负号,化成十进制为: - 14
                                  */

补充

涉及到位操作符

左移操作符<<                二进制序列的最左位不要了,将右边的代码移动覆盖过去

System.out.println(1 << 1);//等于2

右移操作符>>                抛弃最右边的,在最左侧补符号位(正数补0 ,负数补1)
        System.out.println(2 >> 1);//等于1
        System.out.println(-2 >> 1);//等于-1

无符号右移>>>            无符号右移,无论是移动正数还是负数,结果都只能是正数。

5.条件运算符

语法格式:表达式1?表达式2:表达式3

                  表达式1为真,执行表达式2,表达式3不执行
               表达式1为假,表达式2不执行,执行表达式3

        int a = 10;
        int b = 20;
        int c = a > b ? a : b;
        System.out.println(c);

6.赋值运算符

=将数值赋给变量。   eg: int a=4;将数值4赋值给变量a
+=eg:a+=1        展开为:a=a+1
-=eg:a-=1        展开为:a=a-1
*=eg:a*=1        展开为:a=a*1
/=eg:a/=1        展开为:a=a/1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值