当前位置: 首页 > news >正文

Java基础语法补充v2

一、介绍JAVA

编译型语言:C、C++、Java

解释型语言:JavaScript

java的编码、编译、执行过程:

1.java的三个版本   se   ee  me


2.java开发工具包  JDK(java开发工具包,JDK包含JRE,编译工具,文档工具等):

环境变量:path可执行文件的目录    classpath:lib目录所在的路径

%JAVA_HOME%\bin 设置jdk环境变量

!!!这里要注意!!!: 

 

Easy.java 源(代码)文件 javac后生成的java.class为字节码文件。

cd L(...) 按tab补全提示

**java程序运行过程**

(1、编码过程

(2、javac  编译 将java文件编译成字节码文件.class

javac编译后.class文件

运行程序 java XXX(class文件的文件名)

运行程序时和编码的平台没有关系

一次编译(.class)到处运行 归功于下面:

java语言的跨平台性:编译后的字节码文件并没有直接在系统上运行,而是交由JVM解析成系统指令,我们在不同系统上安装指定版本的JVM就可以运行java程序。

所以java程序才有跨平台性。

(3、执行过程 java 类名

3、JRE:java程序的运行环境

4、JVM:java虚拟机(将字节码内容转换成系统指令)

如图:

二、语法及变量

2.1 注释

package com.easy;
/*类的全名 包名+类名
* com.easy.EasyA
* */public class EasyA {/*注释*///注释的内容  单行注释/* 注释内容*  多行注释*  *//*** 文档注释 对方法对类 对属性做说明,养成良好的编码习惯!* @param key 标识* @return 用户名*/public String getName(String key){return "EasyA";}public static void main(String[] args) {new EasyA().getName("key");}}

 2.2 关键字

关键字
java程序中赋予特殊的作用或含义的单词
public static new class void package
所有关键字的字母都是小写,main是方法不是关键字

2.3 变量(统称:标识符)

package com.easy;
public class EasyB {public static void main(String[] args) {int a = 8;int b = 12;System.out.println(a+b);System.out.println(a-b);/*在程序运行过程中,定义一些名称来记录一些数据,在之后的代码中方便使用*//*这些名字:变量名 他们有一个统称 标识符* 类名 包名 变量名 常量名 参数名......(名字)** 命名规则:* 1、只能使用英文字母,数字,下划线和$,不能使用特殊字符(使用中文不会出现错误提示,但是强烈不建议)* 2、首字母不能使用数字* 3、标识符不能使用关键字* 行业内规范:* 1、类名:首字母大写,驼峰命名法 UserName(类名) userName(变量名)* 2、包名:全小写,多个单词使用.连接, com.easy.user.name* 3、常量名:全大写,多个单词使用下划线连接 USER_NAME* */int $a = 12;int _12 = 12;int intA = 12;/*java中的类型* 两种类型 基本数据类型和引用数据类型* 基本数据类型:八种数据类型* 整数类型:byte short int long* 浮点型:float double* 字符型:char* 布尔型:boolean* *//*整数类型:byte 1个字节 8个二进制位 -2^7~2^7-1 128~127short 2个字节 16个二进制位 -2^15-2^15-1int 4个字节 32个二进制位 -2^31-2^31-1 21亿左右 (整数类型的默认类型)long 8个字节 64个二进制位 -2^63-2^63-1所有整数的默认值是0**//** 浮点型:底数位 指数位 算出来的 不能十分精确保存数据的* float 4个字节 32个二进制位 6-7位小数 单精度* double 8个字节 64个二进制位 15-16位小数 双精度 (浮点型的默认类型)* 所有浮点数的默认值为0.0* *//** 字符型:* char 2个字节 16个二进制位 0~65535 0000-FFFF 默认值0* *//** 布尔型:* 1个字节/4个字节(数组中用int储存) 8个二进制位 true false*/System.out.println(12);System.out.println(12.0);double dd = 12.33;float ff = 0.0F;char cc = '你';boolean bb = true;}
}

2.3.1** 基本数据类型

 

数值范围详情见源码:

byte: 1个字节,不考虑负数能表示范围是:0~255,考虑正负表示范围:-128~127

short:2个字节,16位 65536 0~65535

int: 4个字节,考虑正负:-21亿~+21亿

long:8个字节

float: 4个字节

double:8个字节

char字符型:2个字节,采用的是Unicode编码,可以存储汉字

每个字符在编码表里面都对应一个int整数

boolean: 只有true和false两种情况

2.3.2** 引用数据类型

在 Java 中,数据类型分为 基本数据类型(Primitive Types) 和 引用数据类型(Reference Types)
引用数据类型 存储的是对象的 内存地址(引用),而不是实际的数据值

1. 引用数据类型分类

类型说明示例
类(Class)用户自定义或 Java 内置的类(如 StringArrayListString str = "Hello";
接口(Interface)定义行为规范,由类实现List<Integer> list = new ArrayList<>();
数组(Array)固定大小的同类型数据集合int[] arr = new int[5];
枚举(Enum)固定的一组常量enum Color { RED, GREEN }

2. 引用数据类型的特点

(1)存储的是对象的引用(内存地址)

String s1 = "Java";  // s1 存储的是字符串 "Java" 的内存地址
int[] arr = {1, 2};  // arr 存储的是数组对象的内存地址
  • 基本数据类型(如 intchar)直接存储值。

  • 引用数据类型 存储的是 堆内存(Heap) 中对象的地址。

(2)默认值为 null

如果引用变量未初始化,其默认值是 null(表示不指向任何对象):

大多数引用类型需要通过 new 分配内存:

String str = new String("Hello");  // 显式创建 String 对象
List<Integer> list = new ArrayList<>();  // 创建 ArrayList 对象

(3)使用 new 关键字创建对象

大多数引用类型需要通过 new 分配内存:

String str = new String("Hello");  // 显式创建 String 对象
List<Integer> list = new ArrayList<>();  // 创建 ArrayList 对象

(4)可以调用方法

引用类型可以调用类或接口定义的方法:

String s = "Java";
System.out.println(s.length());  // 调用 String 的 length() 方法

 

2.4、数据类型转换

/*基本数据类型的数据转换
* */
System.out.println(12);
double ddd = 12;
/*将整数类型转换成double类型*/
System.out.println(ddd);
/*基本数据类型的类型转换
* 整数类型:在可赋值范围内,可任意转换
* 隐式转换:系统默许的,不需要代码强制声明的转换过程
* 取值范围小的向取值范围大的类型转换 double d = 12;
* 强制数据类型转换:需要代码强制声明的转换过程,如果数据溢出,就是一刀切
* 取值范围大的类型向取值范围小的类型转换 int i = (int)12.0*/
byte bbb = 12;
short sss = 12;
sss = bbb;
//bbb = sss 报错 bbb表示范围小 数据溢出
bbb = (byte) sss;
sss = 128;
bbb = (byte) sss;
System.out.println(bbb);float fff = 12.0F;
fff = (float)12.0;
/*char和整数类型可以转换 仅限0~65535 char不分正负
* 默认值是0*/
char ccc = 'a';
int iii = '倪';
ccc = 0;/*boolean不能和其他类型发生转换*/
boolean bbbb = false;//false 0 true 1

2.5 进制转换

/*进制表示方式 */
int aaa=0b111;//二进制   0b 7
aaa=011;//八进制   0    9
aaa=0xFF;//十六进制   0x   17
//345   5*10^0 + 4*10^1 + 3*10^2
//FF    15*16^0+ 15*16^1

2.6 变量声明与初始化

//变量声明
int a;
//赋值
a = 12;
//声明变量并赋值
int b = 12;
//初始化 第一给变量赋值
int c;
c = 12;
//使用变量之前一定要初始化,下面的条件判断全是变量,编译阶段可能会变化
/*if(a == b){c = 12;
}*/System.out.println(c);//作用域{}
//在同一个{}中变量不能重复声明
//java语言大小写敏感
int A;
//声明八种基本数据类型的变量并赋值
int d = 0;
byte e = 0;
short f = 1;
long g = 10000000000L;
float h = 6.1f;
double i = 2.0;
char j = 'a';
boolean k = true;
// !!! 标识符标准 见名知意 !!!char ch = '\uFFFF';
ch = '\'';
ch = '\\';
ch = '\n';//换行符
ch = '\t';//缩进符 制表符
ch = '\r';//回车符
//引用类 默认值都是null

2.7、运算符

这里,首先我们应区分好运算符的优先级,如下图:

详细如源码所示:

 

public class EasyD {public static void main(String[] args) {//运算符//+- * / %int a = 12;int b = 5;//将a+b这个表达式的结果赋值给resultint result = a + b;result = a - b;result = a * b;result = a / b;result = a % b;//%正负值取决于a(被除数)System.out.println(result);//+ 1、数值运算 2、拼接字符串String name = "我喜欢" + "java";//java中字符串+任意类型的结果都是字符串//+优先级是相同的System.out.println(12+23+"你好");//35你好System.out.println("你好"+12+23);//你好1223//3、 一元运算 ++ --//作用 a++ 对a+1//a-- 对a-1a=12;a++;++a;System.out.println(a);a--;--a;System.out.println(a);//把前面的a看成result,是表达式的值a = a++; //a++ 12 a=13 a=a++;a = ++a; //a=13 ++a 13 a=++a;//a++表达式的取值//a++ 后加加 现将a的值付给a++表达式,然后a加1//++a 先加加 先将a的值+1,再将a的值赋给++a表达式//4、 赋值运算符// = += -= *= /= %=int aa = 12,bb = 23;int aaa,bbb = 12;aa += 12;//在aa变量基础上+12aa = aa + 12;byte ab = 12;/* ab += 12;ab = (byte)(ab+12);ab = ab+ab;*///***所有整数的运算结果都是int类型,有long参与结果就是long类型***//ab = ab + 1L;ab-=12;ab*=12;ab/=12;ab=5;ab%=12;System.out.println(ab);//5//5、关系型运算符//相等 == 不等于!=//大于 > 小于 <//大于等于 >= 小于等于 <=boolean result1 = a==b;//==在基本数据类型中 比较的是值是否相等 和类型无关System.out.println(12==12.0);System.out.println(12=='\u000C');System.out.println(12!=12);//6、逻辑运算符//&&与 ||或 !非a=12;b=23;boolean result2=a>b&&b>0; //A&&B 当A和B都为true,表达式的结果才是trueresult2=a>b||b>0; //A||B 当A或者B有一个true,表达式的结果才是trueresult2=!(a<b);   //反转结果,有时是必要的result2=a>b;/*String str="";if(!str.isEmpty()){}*///7、短路现象(逻辑运算表达式)//A&&B 当A为false,整个表达式的结果就可以确定为false,B不再计算,B表达式就被短路了//A||B 当A为true,整个表达式的结果就可以确定为true,B不再计算,B表达式就被短路了a=12;b=23;result2=a++<0||b++>0;System.out.println(a);System.out.println(b);//13 24a=12;b=23;result2=a++>0||b++<0;System.out.println(a);System.out.println(b);//13 23a=12;b=23;result2=a++<0&&b++>0;System.out.println(a);System.out.println(b);//13 23a=12;b=23;result2=a++>0&&b++>0;System.out.println(a);System.out.println(b);//13 24//8、 位运算符(二进制)a=7;b=8;//& | ^ ~ << >> >>>//& 按位与运算 A&B 将A和B转成二进制,右侧对齐,上下比较,两个都为1,结果为1,否则为0result=a&b;System.out.println(result);//| 按位或运算 A|B 将A和B转成二进制,右侧对齐,上下比较,两个都为0结果为0,否则为1result=a|b;System.out.println(result);//^ 按位异或运算 A^B 将A和B转成二进制,右侧对齐,上下比较,两个不同则为1,否则为0result=a^b;System.out.println(result);//~ 按位取反运算 ~A 将A转成二进制,每个1变成0,每个0变成1result=~a;System.out.println(result);//负数取到正常值要用补码,按位取反加一//<< 位左移运算 A<<B A左移B位,空位补0,相当于A乘以2的B次方result=a<<2;System.out.println(result);//111变成11100//>>  位右移运算    A>>B   A右移B位,相当于A除以2的B次方result=a>>1;System.out.println(result);//>>  带符号右移运算    A>>B   A无符号右移B位,左侧空位补符号位result=-8>>2;System.out.println( result);//>>> 无符号右移运算    A>>>B   A无符号右移B位,左侧空位补0result=-8>>>2;System.out.println( result);
//9、 三元运算符 取值 A?B:C 问A(表达式)的结果 A为true时取B,否则取Ca=12;b=23;result=a>b?a:b;System.out.println(result);System.out.println(a<b?12:12.8); //12.0,取double 较大的取值范围}
}

 三、一些相关题目练习:

package com.easy1;
import java.util.Scanner;
public class exercise {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//1、定义三个整数变量,使用三元运算符,求三个变量中最大的数int i=5;int j=6;int k=7;System.out.println(((i<j?j:i)<k)?k:(i<j?j:i));//2、定义基本数据类型的变量,分别转换成其他基本数据类型,如果转换不了就注释掉,说明原因int a = 0;byte b = 0;short c = 1;long d = 10L;float e = 6.1f;double f = 2.0;char g = 'a';boolean h = true;a=b;a=c;//a=d; 不行,long的数值范围比int大 容易数值溢出 要用强制类型转换a=(int)d;a=(int)e;//浮点数并不是整数,要用强制类型转换a=(int)f;//浮点数并不是整数,要用强制类型转换a=g;//a=h;//a=(int)h; 都不行,boolean不能数值转换//3、定义一个三位整数,编写程序获取该整数的个位,十位,百位,并打印出来int aa=0;//输入一个三位整数aa=sc.nextInt();int bb=aa%10;int cc=aa/10%10;int dd=aa/10/10;//下面三行代码分别打印个位,十位,百位System.out.println(bb);System.out.println(cc);System.out.println(dd);//4、将0XABC验算成八进制int hexNum = 0xABC; // 十六进制 0xABCString octalStr = Integer.toOctalString(hexNum); //使用java官方API换算成八进制System.out.println("0xABC 的八进制值: " + octalStr);//输出验算完成后的结果//5、写一下java的跨平台性/** 首先Java语言执行时是分三个过程,分别是编码、编译和执行过程。* 编码即源代码,是我们写代码时编译的.java文件* 到编译时javac生成.class的字节码文件,为什么此字节码文件能够跨平台运行呢?* 是因为编译后的字节码文件并没有直接在系统上运行,而是交由JVM(Java虚拟机)解析成系统指令* 我们在不同系统上安装指定版本的JVM就可以运行java程序。* 所以java程序才有跨平台性。,*///6、什么是短路现象?/** 短路现象由逻辑运算表达式来实现,分为短路与和短路或两种方式* 比如:* 在逻辑与运算中,A&&B 当A为false,整个表达式的结果就可以确定为false,B不再计算,B表达式就被短路了* 这种现象也被称为短路与* 在逻辑或运算中,A||B 当A为true,整个表达式的结果就可以确定为true,B不再计算,B表达式就被短路了* 这种现象也被称为短路或* 好处是:利用这种现象的机制可以提高效率,避免不必要的计算。* *///7.声明两个整数类型的变量,编写程序交换两个变量的值int m=10;int n=20;int temp=0;if (m!=n){temp=m;m=n;n=temp;}System.out.println(m);System.out.println(n);//输出结果可得,m为20n为10,成功交换了变量值}
}
http://www.dtcms.com/a/282773.html

相关文章:

  • C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏
  • The 2024 ICPC Asia Shenyang Regional Contest B. Magical Palette
  • Docker容器技术讲解
  • Liunx练习项目6-创建dns服务器
  • 主机安全---开源wazuh安装
  • 深入理解概率图模型:贝叶斯网络因子分解、d-分离与马尔可夫毯
  • 基于用户空间操作IIC接口调试云台电机
  • 7.16 Java基础 | 集合框架(上)
  • 微服务架构中实现跨服务的字段级权限统一控制
  • PyTorch深度学习框架入门案例实战
  • 第一章 【vue】基础(超详细)
  • 【动归解题套路框架】【带备忘录的递归】【最优子结构】【自下而上DP table】
  • Spring核心注解@RequestMapping详解
  • Java 二维数组详解:从基础语法到实战应用,彻底掌握多维数据结构
  • 边缘计算革命:AWS Snowcone在智慧工厂的落地实践(2025工业4.0实战指南)
  • 笔试——Day10
  • 【AI交叉】天文学:人工智能如何赋能星辰大海的探索
  • 如何关闭Elasticsearch的安全认证的解决方法
  • Maven入门指南:生命周期、阶段和执行顺序详解
  • 基于深度学习的情感分析模型:从文本数据到模型部署
  • leetcode:990.等式方程的可满足性[图]
  • 推荐《Python 编程:从入门到实践》之Python编程的基础知识
  • 经典算法之基数排序
  • 算法精讲--正则表达式(二):分组、引用与高级匹配技术
  • 基站前传卡 加速卡 EU
  • 一个项目的完整一生 --- 一 窗口大小设置
  • NW956NW961美光固态闪存NW964NW968
  • 如何建立一個單一產品的 Shopify 商店
  • 倪海厦全套下载,八纲辨证,人纪,天纪,针灸,电子版
  • lesson15:Python的文件操作