首页 > 编程语言 >开发语言介绍——Java

开发语言介绍——Java

时间:2022-11-03 09:33:18浏览次数:62  
标签:Java 语言 int 介绍 内存 数组 new type

开发语言介绍——Java

一、基本说明

1.Java语法的特点

  1. 关键字都是小写字母
  2. 标识符没有长度限制
  3. 使用Unicode编码
  4. Java是一种强类型的语言,变量在编译之前一定要被显示的声明

2.配置环境变量

  1. 安装jdk软件,记录安装路径
  2. 打开 “计算机属性”-->"高级系统设置"-->"高级"标签页-->"环境变量"按钮
  3. 新建一个JAVA_HOME的用户变量,路径编写为jdk的安装路径
  4. 编辑变量 Path,向其中添加路径:%JAVA_HOME%bin;%JAVA_HOME%jrebin;(注意不要删除其中原有的数据)
  5. 新建变量 CLASSPATH ,路径编写为:%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;

3.内存

Java中,内存分为栈内存和堆内存。栈内存中保存变量,堆内存中保存使用new语句创建的对象。

二、基础语法

1.访问权限

Java中用访问修饰符来修饰变量、方法、类,来控制这些元素的访问权限。

  1. 只要没有显示声明为某种权限,默认都是friendly。
  2. 如果类中没有构造函数,编译器会为类自动添加构造函数,构造函数的访问权限和类的访问权限一致。
  3. 子类的访问权限,只能比父类的访问权限更加开放

成员变量和方法的访问权限:

0d21ef32316743f2f8d92cb2ba1d4c73.png

普通类的访问权限:

36d2dd0122c076b80b77e488ec12bff5.png

内部类的访问权限:

  • 内部类可以使用public、protected、friendly、private 4种修饰符进行修饰。

2.数据类型

整型:

7a8208a3a439efacbedc8d66fc495bed.png

说明:

  1. Java中所有整型数据都是带符号的
  2. 整型常量默认为int类型的。
  3. 在数字后面加上字母L,该整数会被定义成long类型。
  4. 在数字后面加上字母l,该整数会被定义成long类型。

浮点型:

7d40f494e756c09ed7a3d825d890d724.png

说明:

  1. 浮点型可以用来表示小数,或者范围更大的整数。
  2. 浮点型常量默认为double类型。
  3. 在数字后面字符F,该浮点数会被定义为float。
  4. 在数字后面字符D,该浮点数会被定义为double。
  5. Float.MAX_VALUE、Float.MIN_VALUE表示float类型的上下限。
  6. Double.MAX_VALUE、Double.MIN_VALUE表示double类型的上下限。

字符型:

0645a7761eb717e3ca129ecab3509294.png

说明:

  1. char类型的值必须包含在单引号中。
  2. 在Java中字符采用Uicode编码,所以无论是中文还是英文,每个字符都占用2个字节。

布尔型:

1970b7f87a5226fc75a2d560995e2652.png

3.数据类型转换

自动转换:

赋值运算符和算术运算符两边的数据类型不一致时,如果数据类型相互兼容,将自动转换数据类型。

数据的兼容关系:

  1. byte、short、int、long、float、double相互兼容。
  2. char、boolean与所有类型不兼容。

转换规则:

  1. 整型转换为浮点型
  2. 长度短的转换为长度长的

强制类型转换:

当无法进行自动转换时,可以使用强制类型转换。

语法: (目标数据类型)数据 示例:(int) float a=1.1f; 将float数据a强制转为int型。

说明:

  1. 当浮点型转换为整型时,小数部分被舍弃。
  2. 当数据范围大的数据被转换为数据范围小的数据时,会将当前数据对目标数据类型取模后,将模保存到目标数据中。

4.运算符号

f01f7c382fca7c69fd616a494556fef0.png

07fa14de0d63fe71b167ac86d762bfee.png

说明:

  1. 只有byte、short、char、int、long类型的数据可以进行位移操作。
  2. byte、short、char位移后会自动转换为int类型。
  3. int、long位移后的数据类型不变。
  4. 位移操作的结果会保存在新的内存空间中,不会影响参与位移数据的值。
  5. byte、short、char、int类型的数据进行位移时,实际移动的位数是位移公式中的移动位数%32的值。
  6. long类型的数据位移时,实际移动的位数是要求移动位数%64
  7. 左移的移动规则:将一个数据转换成二进制,移动几位就在末尾添加几个0,将超出数据长度的高位舍弃。如果一个数左移n位后没有舍弃高位,相当于这个数乘上2的n次方。
  8. 带符号右移的移动规则:将一个数转换成二进制,移动几位就在高位添加几个0,然后将左边第一位修改为数据原本的正负符号(1表示整数,0表示负数),将超出数据长度的低位舍弃。一个数右移n位后,相当于除以2的n次方。
  9. 不带符号右移的移动规则:移动规则与带符号右移的规则一致,不过在补高位时一律补0,而不考虑数据原本的正负符号。
  10. 算数运算符、赋值运算符可能触发数据类型的自动转换
  11. 在Java中,赋值语句可以连接在一起,例如:x=y=z=5。

三、数据结构

1.字符串

在Java中,字符串是一个对象,可以用Java提供的标准包Java.lang中封装的String类进行创建。

一个String对象被创建后,如果它的值发生改变,将会创造出一个新的字符串对象,并且将新的字符串对象的地址复制给引用变量。旧的字符串对象依然存在。如果一个字符串对象的值需要经常改变,可以创建为StringBuffer类型。

使用注意:

  1. 在结尾时不要使用0符号
  2. 字符串内容必须用双引号包含
  3. 字符串中的每个字符都使用Unicode编码

声明:

String name;

实例化:

  • 使用构造函数实例化字符串对象:

289446e2803d9c2d32b9b14f1bb1c7cc.png
  • 使用字符串常量实例化字符串对象:
String name= "String content";
  • 使用字符串连接符实例化字符串对象

字符串方法:

c9f216f2878a41c30c18cca675fd02bc.png

2.一维数组

声明:

  • 语法:type arrayName[]
  • 语法:type[] arrayName[];

说明:

  1. type是数据类型
  2. 声明数组的时候系统不会分配内存空间
  3. 声明数组的时候不能指定长度

实例化:

  • 语法:arryaName = new type[length];

说明:

  1. type必须与声明时的类型一致
  2. length是必须是大于1的正整数
  3. 实例化语句可以跟声明语句合并

初始化:

  • 静态初始化

语法:type[] arrayName={value1,value2} 说明:静态初始化的语句必须与数组的声明语句写在一起,此时不需要new关键字。

  • 动态初始化

语法:type[] arrayName=new int[]{value1,value2} 说明:动态初始化相当于在创建数组的时候,执行初始化操作。

内存中的保存形式:

一维数组创建后,会在堆内存中,分配出数据元素个数的存储单元,用来保存数组元素的值。在栈内存中用数组名创建一个变量,保存数组第一个元素在堆内存中的地址。

元素访问:

语法:array[index]

属性:

length:元素个数

方法:

63bf0519cfd8d84f0d42703b01eb76e0.png

3.二维数组

二维数组是由多个一维数组组成的,各个一维数组的长度可以一样,也可以不一样。

声明:

  • 语法:type[][] arrayName;
  • 语法:type arrayName[][];

实例化:

  1. 一维数组长度相同的二位数组:arrayName = new type[length1][length2]
  2. 一维数组长度不同的二位数组只能给每个一维数组分别实例化:
  1. arrayName = new type[length][];
  2. arrayName[0] = new type[length21];
  3. arrayName[1] = new type[length22];

初始化:

  • 语法:type[][] arrayName = {{value00,value01},{value10,value11,value12}}

内存中的保存形式:

假设数组为:

  1. int[][] a= new int[2];
  2. a[0] = new int[2];
  3. a[1] = new int[3];

申请内存的顺序:

  1. 在堆内存中,为a[0]和a[1]分配两个单元的空间,让这两个一维数组名变量保存他们第一个元素的地址。
  2. 在堆内存中,分配2个连续的单元,用来保存a[0]这个一维数组的元素值,同时将a[0][0]的地址保存到a[0]的内存空间中。
  3. 在堆内存中,分配3个连续的单元,用来保存a[1]这个一维数组的元素值,并且把a[1][0]的地址保存到a[1]的内存空间中。
  4. 在栈内存中,分配一个单元给二维数组名a,将a[0]的地址保存在这个空间中。

内存中的数据:

元素访问

语法:array[index][index]

5272661b37f32f6ccf4b1c8bfb0fbeb4.png

四、库函数

0b2294e90950955d0e4f086017a16836.png

五、使用技巧

main函数不能写在内部类中

1.使用正则表达式

思路:用指定的正则表达式实例化一个pattern对象,然后调用这个对象的匹配方法得到匹配结果。

示例代码:

  1. String string="abcde";
  2. String regex="c//we";
  3. Pattern p=Pattern.compile(regex);
  4. Matcher m=p.matcher(string);
  5. while(m.find())
  6. {
  7. System.out.println(m.group());
  8. }

2.去掉数组重复项

思路:

  1. 假设需要去重的数组名为O,新建一个可变长度的数组N
  2. 依次从数组O中取出元素,如果在数组N中存在,直接从O中删除;如果在N中不存在,放入N中再从O中删除。
  3. 最后数组N就是O去重后的数组。

3.整数取模问题

不同的编译器,对整数取模会有不同的结果:

  1. 对于同号的2个整数,所有语言的运算规则是使商尽可能小。
  2. 对于异号的2个整数,C++/Java使商尽可能大,其他语言使商尽可能小。

4.快速遍历数组元素

示例代码:

  1. int[] a={1,2,3};
  2. for(int i:a)
  3. {
  4. System.out.println("i="+i);
  5. }
https://blog.csdn.net/weixin_30767365/article/details/113082817

标签:Java,语言,int,介绍,内存,数组,new,type
From: https://www.cnblogs.com/sunny3158/p/16853323.html

相关文章

  • Spark简单介绍,Windows下安装Scala+Hadoop+Spark运行环境,集成到IDEA中
    一、前言近几年大数据是异常的火爆,今天小编以java开发的身份来会会大数据,提高一下自己的层面!大数据技术也是有很多:HadoopSparkFlink小编也只知道这些了,由于Hadoop,......
  • 如何从 Java 的 List 中删除第一个元素 remove
    如何从Java的List中删除第一个元素remove概述在这个实例中,我们将会演示如何删除在Java中定义的List的第1个元素。我们将会针对这个问题使用List接口的......
  • Java获取当前环境
    配置环境spring.profiles.active=dev获取当前环境方法一通过@Value注解获取@Value("${spring.profiles.active}")privateStringenv;方法二在配置文件中通过env......
  • Java函数式编程(1):Lambda表达式(1)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ Java在其技术发展周期中经历过几次比较重要的变化,如果不是这几次比较重要的变化,恐怕不会有现在这样的江湖地位。个人看......
  • Java Instrumentation
    前言JDK1.5开始,Java新增了Instrumentation(JavaAgentAPI)和JVMTI(JVMToolInterface)功能,允许JVM在加载某个class文件之前对其字节码进行修改,同时也支持对......
  • 如何判断点是否在多边形内部 (C语言版)
    概述这是图形学中的一个经典问题(point-in-polygon),一种比较简易的判断方法是射线法,就是以判断点作为端点,朝着任意方向绘制一条射线。如果射线与多边形交点为奇数个,就说明此......
  • C语言 模拟实现字符串函数 看着一篇够了
    C语言模拟实现字符串操作的库函数求字符串长度strlen思路1.如果碰到\0就代表字符串已经到了末尾size_tmy_strlen(constchar*str){ assert(str!=NULL); //......
  • Java面向对象
    面向过程&面向对象思想面向过程:将一件事情步骤化(只适合处理较为简单的问题)面向对象:思考问题会将问题进行分类,再对分类进行单独思考。最后才会对某个分类下的细......
  • 四舍六入五成双(C语言版)
    四舍五入的小细节计算机的四舍五入与我们数学学的还是有点区别,下面开始讲解吧四舍五入的规则:如果需要约位的数<=4,舍去不进位如果需要约位的数>=6,舍6进1如果需要约......
  • C语言 旋转字符串
    C语言旋转字符串思路:1.循环需要旋转几次2.保存处于第一个的字符3.再将后面的所有字符往前挪动一位4.再把处于第一位的字符放在末尾//字符串旋转第一种解法......