Java基础1

目录

基本结构

开发工具--Eclipse

15个Eclipse常用快捷键

源码导入

乱码问题处理

修改字体

命名

java变量和常量

命名规范

标识符

变量

关键字

访问控制

类、方法和变量修饰符

程序控制语句

错误处理

包相关

基本类型

变量引用

保留关键字

修饰符

访问修饰修饰符

非访问修饰符

变量

变量申明

变量定义

变量赋值

注意

分类

局部变量(Local Variables):

数据类型

划分

 数据类型的比较

数据类型转变

字面值

整型

浮点型

字符型

布尔型

字符串

转义字符

常量

运算符

算术运算符

自增自减运算符

单双目运算符

位运算符

赋值运算符

关系运算符

关系运算符

if 条件结构

if-else条件结构

逻辑运算符

条件运算符

运算符的优先级

基本结构

JVM(java虚拟机)

JRE(java运行时环境)

JDK(JAVA语言开发工具包)

JavaSE Java标准版

JavaEE Java企业版,Web程序

JavaME java微型版,移动设备

开发工具--Eclipse

15个Eclipse常用快捷键

1、alt+? 或 alt+/:自动补全代码或者提示代码

2、ctrl+o:快速outline视图

3、ctrl+shift+r:打开资源列表

4、ctrl+shift+f:格式化代码

5、ctrl+e:快速转换编辑器

6、ctrl+page down 或 ctrl+page up: 选项卡之间快速切换

7、shift+enter 及 ctrl+shift+enter: 在当前行上或者下边创建空白。

8、Alt+方向键上下:上下行交换内容或把当前行内容把上或下移动

9、Control+Alt+方向上下键:复制高亮显示的一行或多行

10、ctrl+m:当前编辑页面窗口最大化

11、ctrl+/:自动注释当前行或者选择的多行

12、ctrl+shift+/:自动注释掉选择的代码块

13、ctrl+d:删除当前行

14、ctrl+shift+x 和 ctrl+shift+y :英文字母大小写的转换

15、ctrl+shift+o:自动引入包和删除无用包

。。。。。

源码导入

下载源码并解压;

  1. File -> Import;

  2. General -> Existing Projects into Workspace -> Next;

  3. Select root directory -> Browse;

  4. 选择解压后的源码文件夹;

  5. 出现要导入的源码后,点击Finish;

  6. 在类中,点击右键,选择Run As -> Job Application。

乱码问题处理

源码中出现乱码的情况是因为源码中有中文,为了解决这个问题,我们可以使用utf-8编码方法

在eclipse左侧工程栏中找到自己导入的工程,打开.java文件后出现乱码;

在工程名上右键,选择Properties。

Resource -> Text file enconding -> Other: UTF-8 -> Apply and Close

修改字体

windows-preference-basic-textfont,之后根据自己喜好需求更改即可。

命名

eclipse中创建项目时命名规范,项目名要驼峰命名、包名要小写、类目要驼峰命名。

.一般包名都是以域名的倒叙来命名 如:com.baidu,包名映射的是文件夹名字,以"."为分层

java变量和常量

命名规范

标识符

1、标识符可以由字母、数字、下划线(_)和美元符($)组成,不能以数字开头

2、标识符需严格区分大小写

3、标识符不能是Java关键字和保留字

4、标识符的命名最好能反映出其作用

5、不能包含空格

变量

满足标识符命名规范 ​

符合驼峰法命名规范(age;stuName) ​

尽量简单,做到见名知意

变量名的长度没有限制

关键字

访问控制

private-私有的 protected-受保护的

public-公有的 default–默认的

类、方法和变量修饰符

abstract-声明抽象 class-类

extends-扩充,继承 final–最终值,不可改变的

inplements–实现(接口) interface–接口

native–本地,原生方法(非java实现) new-新,创建

static–静态 strictfp–严格,精准

transient–短暂 voiatile–易失

程序控制语句

break–跳出循环 case–定义一个值供switch选择

continue–继续 do–运行

else–否则 for –循环

if–如果 instance of–实例

return —返回 switch–根据值选择执行

while–循环

错误处理

assert–断言表达式是否为真

catch–捕捉异常

finally–有无异常都执行

throws–申明一个异常被抛出

try–补货异常

包相关

import–引入 package–包

基本类型

boolean–布尔型 byte–字节型

char–字符型 double–双精度浮点

float–单精度浮点 int–整型

long–长整型 short–短整型

变量引用

super–父类 this–本类

void–无返回值

保留关键字

goto、const–是关键字,但不能被使用

修饰符

修饰符用来定义类、方法或者变量,通常放在语句的最前端。

  • 访问控制修饰符 : default, public , protected, private

  • 非访问控制修饰符 : final, abstract, static, synchronized

访问修饰修饰符

范围

private:只允许在本类中进行访问 使用对象:变量、方法

public:允许在任意位置访问 使用对象:类、接口、变量、方法

protected:允许在当前类,同包子类/非子类,跨包子类中访问,但不能在跨包非子类中访问

使用对象:变量、方法。

默认(default):允许在当前类,同包子类/非子类中访问,跨包子类/非子类不能访问

使用对象:类、接口、变量、方法

非访问修饰符

static 修饰符:用来修饰类方法和类变量。

final 修饰符:用来修饰类、方法和变量,final 修饰符通常和 static 修饰符一起使用来创建类常量。父类中的 final 方法可以被子类继承,但是不能被子类重写;final 类不能被继承。

abstract 修饰符:用来创建抽象类和抽象方法。

synchronized 修饰符:synchronized 关键字声明的方法同一时间只能被一个线程访问;

transient 修饰符:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量;

volatile 修饰符:volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样可以保证任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

变量

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

三元素

变量类型,变量名,变量值。

变量申明

格式:数据类型 变量名;

int n1;      声明整型变量n1
long n2;      声明长整型变量n2

变量定义

int n1=031;    //定义int类型变量存放八进制数据

long longNumber=0xa3cde3bfL;     //定义变量存放十六进制长整型数据

short shortNumber=111;    //定义变量存放短整型数据

byte b=10;    //定义变量存放byte类型数据

变量赋值

使用“=”运算符进行赋值,即将右面的值赋值给左边的变量

1.先定义后赋值

int n;//定义int 型变量
n=3;//将3赋值给变量

2.定义的同时赋值

int n=3;//变量类型 变量名=变量值

注意

1.变量名不能重复定义

2.给变量赋值的时候要注意类型匹配

3.给变量赋值的时候不要超过取值范围

分类

Java 语言支持的变量类型有:

  • 局部变量(Local Variables):
    • 局部变量声明在方法、构造方法或者语句块中。

    • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁。

    • 局部变量必须在使用前声明,并且不能被访问修饰符修饰,

    • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

    • 局部变量只在声明它的方法、构造方法或者语句块中可见,不能被其他方法或代码块访问。

    • 局部变量是在栈上分配的。

  • 成员变量(Instance Variables):

    • 定义在类中、方法之外的变量,作用域为整个类,可以被类中的任何方法、构造方法和语句块访问。可以被访问修饰符修饰。

    • 当一个对象被实例化之后,每个成员变量的值就跟着确定。成员变量在对象创建的时候创建,在对象被销毁的时候销毁。

    • 成员变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息。

    • 成员变量可以声明在使用前或者使用后。

    • 成员变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把成员变量设为私有。通过使用访问修饰符可以使成员变量对子类可见。

    • 成员变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是 false,引用类型变量的默认值是 null。变量的值可以在声明时指定,也可以在构造方法中指定;

    • 成员变量可以通过对象访问,也可以通过类名访问(如果它们是静态成员变量)。

  • 静态变量(Class Variables):

    • 定义在类中、方法之外的变量,并且使用 static 关键字修饰;作用域为整个类,无论创建多少个类实例,静态变量在内存中只有一份拷贝,被所有实例共享。

    • 静态变量是与类相关的变量,具有唯一性,可以用于存储整个程序都需要使用的数据,如配置信息、全局变量等;

    • 静态变量具有共享性,需要注意其线程安全性。多个线程同时对静态变量进行读写操作可能会导致数据不一致或者出现静态条件。在多线程环境中使用静态变量时需要进行同步操作或者使用线程安全的方式访问。

    • 可以被类中的任何方法、构造方法和语句块访问,可以被访问修饰符修饰。

    • 可以通过类名来访问静态变量,也可以通过实例名来访问静态变量。

  • 参数变量(Parameters):

    • Java 中的参数变量是指在方法或构造函数中声明的变量,用于接收传递给方法或构造函数的值;

    • 只在方法或构造函数被调用时存在,并且只能在方法或构造函数内部使用。

    • 参数变量的传递有值传递(基本数据类型)、引用传递(对象类型)。

数据类型

划分

数据类型分为基本数据类型和引用数据类型。

基本数据类型分为数值型(byte,short,int,long,float,double)、字符型(char)、布尔型(boolean)。

引用数据类型有类,接口,数组。

 数据类型的比较

byte、short、int 和 long 类型可以相互比较 (整形之间可以相互比较)

浮点型之间可以相互比较

整形和浮点型之间可以相互比较

整形和字符型可以相互比较

字符串和整型浮点型以及字符型不可以相互比较

布尔型不能与任何数据类型相互比较

数据类型转变

1.自动转变

数据表示范围小的可以转换为表示范围大的类型

 2.强制类型转换

将大数据范围类型的A强制转换为小数据范围的B

格式:(数据类型)数值

字面值

整型

十进制:1,2,13,33,

八进制:以0开头,包括0-7的数字

如:037,056

十六进制:以0x或0X开头,包括0-9的数字,及字母a-f,A-Fa表示数字10,以此类推!

如:0x12,0xabcf,0XABCDE

浮点型

浮点型字面值默认情况下表示double类型,也可以在值后加d或D

如:123.45d或123.45D 不添加后缀123.45则默认为双精度的浮点型double

如表示float类型,则需要在字面值后加f或F

如:23.4f或23.4F

字符型

单引号内的单个字符表示如:'a','b','$'

需注意:

1.字符型字面值用单引号引起来

2.单引号中必须只有一个字符

布尔型

布尔值只能定义为true和false,不能定义为1/0

字符串

表示双引号引起来的0个或多个字符(注意字符串不属于基本数据类型,它是类)

转义字符

常量

用final关键字修饰,且用final关键字修饰后的常量不能再次赋值。

如:final int N=6;//常量的值一般用大写字母表示。

运算符

算术运算符

例:+、-、*、/、%

public class MathDemo {
public static void main(String[] args) {
int num1 = 10, num2 = 3;
int result;
// +
result = num1 + num2;
System.out.println(num1+"+"+num2+"="+result);
// -
result = num1 - num2;
System.out.println(num1+"-"+num2+"="+result);
// *
result = num1 * num2;
System.out.println(num1+"*"+num2+"="+result);
// / 分子分母都是整形,结果是整除后的结果
result = num1 / num2;
System.out.println(num1+"/"+num2+"="+result);
// 分子分母一个为浮点型,结果也是浮点型(精确)
System.out.println("13.0/5="+13.0/5);
// %
result=num1%num2;
System.out.println(num1+"%"+num2+"="+result);
System.out.println("13.5/5="+13.5%5);}
}       

自增自减运算符

例:++、--

num2 = ++num1 // num1先自增,再赋值给num2
num2 = num1++ // 先赋值给num2, num1再自增


public class MathDemo{
public static void main(String[] args) {
    // x++
    int x = 4;
    int y = (x++) + 5;
    System.out.println("x="+x+",y="+y);
    // ++y
    x = 4;
    y = (++x)+5;
    System.out.println("x="+x+",y="+y);
    // x--
    x = 4;
    y = (x--) + 5;
    System.out.println("x="+x+",y="+y);
    // --x
    x = 4;
    y = (--x) + 5;
    System.out.println("x="+x+",y="+y);}
}

单双目运算符

单目:操作一个运算数

双目:操作两个运算数

位运算符

&:对应位皆为1,结果为1,否则为0

|:对应位皆为0,结果为0,否则为1

^:对应位值相同,结果为0,否则为1

~:按位取反即0-1,1-0;

<<:按位左移操作符,左操作数按位左移右操作数指定位数

>>:按位右移操作符,右操作数按位右移操作数指定位数

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

赋值运算符

格式:变量 = 表达式;

例如:int n = 3; // 将3赋值给n

注意:赋值运算符是从右往左运算,赋值运算符的左边不能是常量!

关系运算符

比较运算符用于判断两个数据的大小,比较的结果是一个布尔值

例:

'A' > 'B' 结果为false,比较的是两个字符的ASCII值

5!=6 结果为true,比较两个数值是否相等

true==false 结果为false,两个布尔值不相等

float f=5.0f; long l=5; f==l;

结果为true,浮点数与整数进行比较,只要值相等就返回true

关系运算符

if 条件结构

if(){

<语句>

}

if-else条件结构

if(true) {<语句块>} else {<语句块>}

// 例:判断一个整数是奇数还是偶数,并将结果打印输出
// int n=5;
// 从键盘接收数据
System.out.println("请输入一个整数:");
Scanner s=new Scanner(System.in);
int n=s.nextInt();
if(n%2==0) {
    System.out.println(n+"是偶数!");
}else {
    System.out.println(n+"是奇数!");
}

逻辑运算符

与运算符:两边为true,结果才为true

&运算符:如果左边表达式为false,还是会继续计算右边的表达式

&&运算符:如果左边表达式的值就能就决定表达式最后的结果,运算符右边的表达式就不再计算了(短路运算符)

或运算符:两边为false,结果才为false

|运算符:如果左边表达式为true,还是会继续计算右边的表达式

||运算符:如果左边表达式的值就能就决定表达式最后的结果,运算符右边的表达式就不再计算了(短路运算符)

!运算符 取反

条件运算符

语法:布尔表达式? 表达式1:表达式2

当布尔表达式的值为true,则返回表达式1的值,反之则返回表达式2的值。

运算符的优先级

import  java.util.Scanner;
public class MathDemo61 {
	
	public static void main(String[] args) {
		// 闰年的判断
		System.out.println("请输入年份:");
		Scanner sc=new Scanner(System.in);
		int year = sc.nextInt();
		//使用if语句判断year是否被4且不被100整除,或者被400整除
		if((year%4==0&&year%100!=0)||year%400==0) {
			System.out.println(year+"年是闰年!");
		}else {
			System.out.println(year+"年不是闰年!");
		}
		

	}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

42341352315125115

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值