javaee课笔记

小试牛刀:1.char a = 20000;int b = '我';这个有错误么?答:没有当给char赋整数时,需要在0~65535。十进制、八进制、十六进制均可(只能放单个字符),他会对应字符编码表转换成相应的字符①ASCII码中,一个英文字母(不分大小写)占一个字节的空间②UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。③Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。当给int赋值一个字符时,他会对应字符编码表转换成整数2
摘要由CSDN通过智能技术生成

第一节

小试牛刀:
1.

char a = 20000;
int b = '我';

这个有错误么?
答:没有
当给char赋整数时,需要在0~65535。十进制、八进制、十六进制均可(只能放单个字符),他会对应字符编码表转换成相应的字符
①ASCII码中,一个英文字母(不分大小写)占一个字节的空间
②UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
③Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。
当给int赋值一个字符时,他会对应字符编码表转换成整数
2.
String类中replace方法和replaceAll方法有什么区别?
replace方法:支持字符和字符串的替换。
replaceAll方法:基于正则表达式的字符串替换。
3.
Object类中有hashCode方法,什么时候需要重写该方法?
????
为什么在编程之前都需要搭建环境,到底在做什么?
将高级语言编译成计算机能读懂的语言
为什么要配置环境变量?
在这里插入图片描述
2、Java最大的特性是跨平台,什么是跨平台,为什么能实现跨平台?
平台:操作系统 和 CPU架构
一次编译后生成的目标文件(.class字节码),可以直接在多个平台上运行。

java:一次编译,到处运行
c等其他语言:到处编译,才能运行

.class字节码文件,不直接在机器上运行,而是在jvm虚拟机上运行。
通过jvm,隔离平台指令集的差异。
3、JDK、JRE、JVM都是什么,有什么关系?
JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,
JRE :英文名称(Java Runtime Environment),我们叫它:Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。
JDK :英文名称(Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。
显然,这三者的关系是:一层层的嵌套关系。JDK>JRE>JVM。
Java 为什么能跨平台,实现一次编写,多处运行?

Java 能够跨平台运行的核心在于 JVM 。不是 Java 能够跨平台,而是它的 jvm 能够跨平台。我们知道,不同的操作系统向上的 API 肯定是不同的,那么如果我们想要写一段代码调用系统的声音设备,就需要针对不同系统的 API 写出不同的代码来完成动作。

而 Java 引入了字节码的概念,jvm 只能认识字节码,并将它们解释到系统的 API 调用。针对不同的系统有不同的 jvm 实现,有 Linux 版本的 jvm 实现,也有 Windows 版本的 jvm 实现,但是同一段代码在编译后的字节码是一样的。引用上面的例子,在 Java API 层面,我们调用系统声音设备的代码是唯一的,和系统无关,编译生成的字节码也是唯一的。但是同一段字节码,在不同的 jvm 实现上会映射到不同系统的 API 调用,从而实现代码的不加修改即可跨平台运行
变量

1.变量先赋值(初始化),再使用
首先,任何变量在C语言中不赋值的话,会是乱码的形式,可能有安全问题。所以java修正了这点,对于局部变量强制让你赋值。至于为什么成员变量有自己的初始值,而不需要强制赋值,那是因为new对象的时候,构造函数帮你初始化了
2. java变量的作用域:包含它的最近的一对大括号
3. 变量的命名规则:

int b3 = 0;
int 3b = 0;
int=0;
int $我=0;
int _我=0;
int ¥我=0;
第几个是错误的?
只有第二个

由数字、字母、下划线、$,以及各国语言文字组成,但是不能以数字开头,不能与关键字或符号冲突
数据类型

byte b = (byte)128;
System.out.println(b);
结果是什么?

答:-128,多出来的就从该类型的最小开始重新算,多出几个加几个
byte 1字节 8位 -2^7 ~2^7-1 -128~127
char/short 2字节 16位 -2^15 ~ 2^15-1 -32768~32767
int 4字节 32位 -2^31 ~ 2^31-1
128的二进制 原码为000…00010000000,前面有好多0,加上后面的一共32位
-128的原码为10…00010000000
补码为011…111101111111+1=111…1111000000,强转为byte后为10000000,所以为-128

第二节

一般系统默认就会用4字节(int)存储数字

int a=2147483647;
int a2=2147483648;
long a3=2147483648;   应改为long a3= 2147483648L;

a2,a3都会报错,因为a2超出了范围,a3应该加L

float是4字节,long是8字节 ,为什么float表示的数的范围比较大?
答:因为float的表示方式使用的科学计数法来表示的,虽然字节少,但是存储的数比较大
自动转换,强制转换:
1.基础数据类型,数值之间
2.子类父类
3.包装类和基础数据类型
byte---------->>double
低-------------->>高
低到高,自动转换,无风险。高到低,强制转换,但是可能会数据丢失

char a=20000;
c=a+1;//报错
c=20000+1不报错

迷惑点:为什么这里给char赋值20000时他不会报错,赋整数时默认的不是int么?,这里不应该强制转换才行么??

运算符
&&:他会有短路情况

int a=1;
int b=2;
Boolean a1=b<a&&	a++>1;
System.out.println(a1);
System.out.println(a);
输出结果:false
1

这里的a 不是2的原因:&&是一种短路运算,当前面错误时他就不会进行运算了,,后面的a++就不会执行了但是&运算他会执行
同理||会短路,|不会短路
位运算:&,|,^

int a1=5&2;0
int a2=5|2;7
int a3=5^2;

写出他们的二进制形式5:101 ;2:010,
&运算,两个都为1才是1,不同取0,所以为000
|运算,两个有一个为1就为1,所以为111
^运算,两个相同为1,不同为0,所以为111

请使用三种方式定义长度为5的整形数组;

int [] a=new int[5];
int []aa={
   1,2,3,4,5};
int []aaa=new int[]{
   1,2,3,4,5};

为什么数组定义的变量不可以直接存储在栈中,而是使用堆和栈相结合的方式,
因为栈的特点是读取速度快,但是存储量少,而堆的特点是读取速度慢,但是空间量大。如果将数据直接存储在变量中,变量在栈中,很快就会导致栈空间满,溢出,程序崩溃。
理解引用数据类型:
在这里插入图片描述
在这里插入图片描述
这里sa1和sb1用的是同一个地址,所以,改sb1的值就相当于改了sa1的值
数组的扩容:
手动

Scanner sc=new Scanner(System.in);
		int[] cj=new int[5];
		int count=0;
	System.out.println("请输入学生的成绩");
	while(true) {
   
		int c=sc.nextInt();
		if(c==-1) {
   
			break;
		}
		if(count==cj.length) {
   
int [] nw=new int[cj.length*2];//重新创建一个2倍cj长度的数组
			for(int i=0;i<cj.length;i++) {
   
			nw[i]=cj[i];
		}
					cj=nw;
					}

自动扩容

 cj=Arrays.copyOf(cj, cj.length*2);

自动排序Arrays.sort(cj))
数组的拷贝,因为数组的扩容会使得没有赋值的空间的元素为0,拷贝可以使得这种状态消失,

int [] tmp=new int[count];
Systrm.arraycopy(cj,0,tmp,0,count);

第三节

交换两数据的值:
这种的是交换不了值的:他只改变的是形参的值

public static void fn1(int a,int b)
{
   
	int t=a;
		a=b;
		b=t;
}

这种是可以交换值的:引用数据类型,传参是地址值,形参和 和实参操作同一 内存空间,

public static void fn2(int[] a,int [] b)
{
   
		int t=sa[0];
		sa[0]=sb[0];
		sb[0]=t
}
!!!!!!!!这里他没有交换数据,所以他不会改变值
public static void fn3(int[] a,int[]b)
{
   
		int[] t=si;
		si=sj;
		sj=t
}

字符串常见操作
达到熟练、灵活应用的程度,包括
遍历 charAt、长度length、截取substring、分割split、替换replace、
查找indexOf、比较 equals compareTo、大小写 toUpperCase等

截取路径中文件名:
path = "D:\Soft\OracleXE  11g\DISK11\setup.exe";
当把这行粘贴到eclipse中,它会变成双斜杠,因为/有特殊含义,可以和一些字母产生作用,所以需要双斜杠进行转义
//获取path中文件名(setup)
int i1 = path.lastIndexOf("\");
int i2 = path.lastIndexOf(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaEE学习笔记是我自己在学习过程中总结的javaweb各项技术和知识点。它包含了JavaEE的十三种核心技术,分别是JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF。 JavaEE是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。 在支持JavaBeans规范的开发环境中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。所以在JavaEE学习笔记中,你可以找到关于这些核心技术和JavaBean的详细内容和示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [javaEE学习笔记](https://download.csdn.net/download/sugar_map/10268742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JavaEE学习笔记整理](https://blog.csdn.net/qq_51861704/article/details/124133294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值