java基础(变量,数据类型,运算符)

Java的运行机制:

Java的运行机制分为三个部分:编写,编译,执行

1.编写:指的是Java源代码的编写,生成后缀名为 .java的代码文件,该文件可用于编译

2.编译:指的是使用Java编译器对 .java文件进行编译,生成后缀名为 .class的字节码文件,该文件可用于被JVM(java虚拟机)的解释器读取

3.运行:指的是JVM的解释器将编译生成的 .class文件翻译成机器码,并执行程序显示结果

4.字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码,它是一种二进制文件,是Java源文件由Java编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的Java解释器来解释执行,因此Java是一种在编译基础上进行解释运行的语言。只要计算机上安装了JVM,就可以跨平台跨操作系统运行Java程序

需要注意的是,Java程序通过Java虚拟机可以达到跨平台特性,但Java虚拟机并不是跨平台的,也就是说,不同操作系统上的Java虚拟机是不同的,即Windows平台上的Java虚拟机不能使用在Linux平台上,反之亦然

5.Java虚拟机(JVM)是一种抽象机器,有自己的一套机器指令、栈、寄存器等运行Java程序必备的组件,是附着于具体的操作系统上的软件实现。编译后的Java程序指令不在计算机的CPU上执行,而是在JVM上执行。JVM由多个组件构成,包括可以解释编译后的Java指令的字节码解释器、负责加载类,并完成类的链接和初始化工作的类装载器、按照一定的安全策略对JVM中指令的执行进行控制的安全管理器、用于检测不再使用的对象,进行垃圾回收的垃圾收集器。

JDK、JRE、JVM三者之间的关系:

  • JDK:Java开发工具箱 有单独的安装包

  • JRE:Java运行时环境 有单独的安装包

  • JVM:Java虚拟机 没有单独的安装包

    1. JVM是不能独立安装的

    2. JRE和JDK都是可以独立的安装

    • 安装JDK的时候:JRE就自动安装了,同时JRE内部的JVM也就自动安装了

    • 安装JRE的时候:JVM就自动安装了

​
以下关于Java的运行机制中描述正确的是:

ClassLoader 是 JVM 实现的一部分
Java 虚拟机逐行读取并执行Java代码
Java 编译器会将程序编译为 Java 虚拟机可以执行的字节码
Java 虚拟机(Java Virutal Machine)简称 JVM ,用于执行 Java 字节码
Java 运行时环境(Java Runtime Evironment)简称 JRE ,用于运行 Java 程序,包含 JVM
Java 开发工具包(Java Development Kit)用于开发Java程序,包含JRE和 Java 编译工具等


​

标识符:

1.标识符概念

(1)对各种变量、方法、函数等命名时使用的字符序列称为标识符

(2)凡是自己可以起名字的地方都叫标识符

简单的说,Java中凡是可以由程序员自己起名字的都叫标识符。其涉及到的结构有:包名、类名、接口名、变量名、方法名、常量名。

2.标识符命名规则

(1)有英文大小写字母、数字、下划线_,美元符号¥组成

(2)数字不在开头

(3)严格区分大小写。eg:var Num int 和var num int是两个不同变量

(4)标识符不能包含空格 eg: var ab c int = 20错误abc有空格

(5)下划线"_"本身在go中是一个特殊的标识符,称为空标识符。可以代表任何其他的标识符,但是它对应的值会被忽略,所以仅能作为占位符使用,不能作为标识符使用。

(6)不能以系统保留关键字作为标识符(总共25个),如break,if等

标识符的命名规范:

1、包名:保持package的名字和目录保持一致,尽量采取有意义的包名,简短有意义,不要和标准库不要冲突fmt 2、变量名、函数名、常量名:采用驼峰法

eg: var stuName string = “tom”

var goodPrice float32 = 12345.2

3、如果变量名、函数名、常量名首字母大写,则可以被其他的包访问:

如果首字母小写,则只能在本包中使用(首字母大写是公开的,首字母小写是私有的),在golang中没有public、private等关键字

变量:

在程序运行过程中 值会发生改变的量 叫做变量。

变量的作用域:

1,什么是作用域?

        变量的有效范围

2,关于变量的作用域

        出了大括号就不认识了。

3,Java中有一个很重要的原则:

        就近原则。(不仅Java中是这样,其他编程语言都有这个原则)

        哪个离我近,就访问哪个。

Java变量有一个特点:(在局部变量中的时候,其它变量会被系统赋值(赋默认值))

        必须先声明,再赋值,才能访问。

public class Demo01{
	
	//static int b;//注意,main方法是静态的,所以只能变成静态变量
	
	int c;
	public static void main(String[] args){
		//int a;
		//System.out.println(a);//编译错误,需要初始化
		//System.out.println(b);//0
		
		this.test();//0
	
	}
	public void test(){
		System.out.println(c);
	}
}

Java 变量类型

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

type identifier = value;

格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。

以下列出了一些变量的声明实例。注意有些包含了初始化过程。

int a, b, c;     // 声明三个int型整数:a、 b、c 
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 
byte z = 22;     // 声明并初始化 z 
String s = "runoob";  // 声明并初始化字符串 s 
double pi = 3.14159; // 声明了双精度浮点型变量 pi 
char x = 'x';    // 声明变量 x 的值是字符 'x'。

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

  • 类变量:独立于方法之外的变量,用 static 修饰。

  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。

  • 局部变量:类的方法中的变量。

实例:

public class Variable{   
	static int allClicks=0;    // 类变量    
	String str="hello world";  // 实例变量   
	public void method(){         
			int i =0;  // 局部变量     
	}
}

1.Java 局部变量

  • 局部变量声明在方法、构造方法或者语句块中;

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

  • 访问修饰符不能用于局部变量;

  • 局部变量只在声明它的方法、构造方法或者语句块中可见;

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

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

2.实例变量(成员变量)

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;

  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;

  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;

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

  • 实例变量可以声明在使用前或者使用后;

  • 访问修饰符可以修饰实例变量;

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

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

  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名

3.类变量(静态变量)

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外

  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。

  • 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。

  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。

  • 静态变量在第一次被访问时创建,在程序结束时销毁。

  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。

  • 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。

  • 静态变量可以通过:ClassName.VariableName的方式访问。

  • 类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。

变量在内存的位置:

常量:

  • 在程序运行过程中 值不会发生改变的量 叫做变量

常量的命名规范:

1,每个单词字母都大写,如果是多个单词用“-”连接。

   一般使用 public stitic final +名称  来表示常量

数据类型:

java数据类型可分为两大类(基本数据类型、引用类型),而基本数据类型可细分为4类8种。每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(例如byte占1个字节)。

一、基本数据类型4类

1、整数型

  • byte 一个字节(字节型)

  • short 两个字节

  • int 四个字节(默认

  • long 八个字节

    • 一个字节八个比特位 一个比特位就是一个0/1(二进制)

2、浮点型

  • float 四个字节

  • double 八个字节(默认

3、字符型

  • char,存放单个字符,如’a’、‘男’,单个字母占1个字节,单个汉字占2个字节

4、布尔型 boolean:

  • 存放true、false

整数型和浮点型都属于数值型,因此也可以说是3类。

注意:

long类型占用8个字节,float类型占用4个字节,哪个容量大?

任意一个浮点型都比整数型空间大。

        float容量 > long容量。

Java中规定,任何一个浮点型数据默认被当作double来处理。

如果想让这个浮点型字面量被当作float类型来处理,那么需要在字面量后面添加F/f。

1.0会被默认当作double来处理。

1.0F这才是float类型。

三、引用类型

1、类 class

2、接口 interface

3、数组 [ ]

4.String 字符串

5、枚举

运算符:

算数运算符:

+,-,*,/,%

比较运算符 :

> < >= <= != ==

1.基本数据类型,==判断的是值

2.引用数据类型,==判断的是他们在内存中存放的地址

赋值运算符:

= += -= *= %=

逻辑运算符 :

& | ! && ||

当&&前面已经为false时后面不判断

三元运算符:

(比较表达式)?表达式1:表达式2;

其中如条件语句为真(即问号前面的条件成立)执行表达式1,否则执行表达式2

位运算符:

位运算是对操作数以二进制为单位进行的操作和运算,运算结果为整数。位运算符包括:“&”、“|”、“~”、“^”和移位运算符“>>”、“<<”、“>>>”,7个位运算符。

关于二进制有几点需要记的:

二进制的高位是符号位:0表示正数、1表示负数。
正数的原码、反码、补码都一样(三码合一)
负数的反码=它的原码符号位不变,其它位取反(0-->1,1-->0)
负数的补码=它的反码 + 1,负数的反码=负数的补码 - 1
0的反码,补码都是0
Java没有无符合数,换而言之,Java中的数都是有符号的
在计算机运算的时候,都是以补码的方式来运算的
当我们看结果的时候,要看它的原码
第7点和第8点可以总结为:运算看补码,结果看原码

注意:二进制向上借位是以2为单位借的
 

位运算当中是可以位移负数位的:

其实规则和正数是一样的,

(以左移为例)只不过它把最后n位(最右边的n位二进制)变到最前面了。所以正数有符号位移也可能变成负数。变成负数之后会被当成补码进行还原,输出的是原码。

推荐文章:

http://t.csdn.cn/2n0ZD

http://t.csdn.cn/jDSYH

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是关于Java数据类型运算符的一些基本知识: Java数据类型可分为两类:基本数据类型和引用数据类型基本数据类型包括整数类型、浮点数类型、字符类型和布尔类型。引用数据类型包括类、接口、数组等。 Java运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、三目运算符等。 下面是一些常见的Java数据类型运算符的示例: 整数类型: ```java int a = 10; // 声明一个整数类型变量 long b = 100L; // 声明一个长整数类型变量 ``` 浮点数类型: ```java float c = 1.23f; // 声明一个单精度浮点数类型变量 double d = 4.56; // 声明一个双精度浮点数类型变量 ``` 字符类型: ```java char e = 'a'; // 声明一个字符类型变量 ``` 布尔类型: ```java boolean f = true; // 声明一个布尔类型变量 ``` 算术运算符: ```java int g = 10; int h = 5; int i = g + h; // 加法运算 int j = g - h; // 减法运算 int k = g * h; // 乘法运算 int l = g / h; // 除法运算 int m = g % h; // 取模运算(求余数) ``` 关系运算符: ```java int n = 10; int o = 5; boolean p = n > o; // 大于运算 boolean q = n < o; // 小于运算 boolean r = n >= o; // 大于等于运算 boolean s = n <= o; // 小于等于运算 boolean t = n == o; // 等于运算 boolean u = n != o; // 不等于运算 ``` 逻辑运算符: ```java boolean v = true; boolean w = false; boolean x = v && w; // 逻辑与运算 boolean y = v || w; // 逻辑或运算 boolean z = !v; // 逻辑非运算 ``` 位运算符: ```java int aa = 10; int bb = 5; int cc = aa & bb; // 按位与运算 int dd = aa | bb; // 按位或运算 int ee = aa ^ bb; // 按位异或运算 int ff = ~aa; // 按位取反运算 int gg = aa << 2; // 左移运算 int hh = aa >> 2; // 右移运算 ``` 赋值运算符: ```java int ii = 10; ii += 5; // 等价于 ii = ii + 5 ii -= 5; // 等价于 ii = ii - 5 ii *= 5; // 等价于 ii = ii * 5 ii /= 5; // 等价于 ii = ii / 5 ii %= 5; // 等价于 ii = ii % 5 ``` 三目运算符: ```java int jj = 10; int kk = 5; int ll = jj > kk ? jj : kk; // 如果 jj > kk,则返回 jj,否则返回 kk ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值