Java基础回顾

内容:

1、Java中的数据类型

2、引用类型的使用

3、IO流及读写文件

4、对象的内存图

5、this的作用及本质

6、匿名对象

 

 

 

1、Java中的数据类型

Java中的数据类型有如下两种:

  • 基本数据类型: 4类8种   byte(1) boolean(1) short(2) char(2) int(4) float(4) long(8) double(8)    注:括号内指某类型是几字节的
  • 引用数据类型:String、数组、集合(ArrayList) 、Scanner、自定义类型

基本数据类型和引用数据类型的区别:

  • 基本数据类型:声明时直接在栈内存中开辟空间并直接在当前内存中存放数据,赋值时传递的是传值的
  • 引用数据类型:声明时会将实际的数据存放在堆内存中,同时在栈内存中存放着在堆内存中的首地址,赋值时传递的是引用的

 

 

2、引用类型的使用

(1)String

String的API:

 1 引用类型String中的方法(4532)
 2 第一组: 判断方法
 3           boolean equals(String str);            // 比较两个字符串的内容是否相等
 4           boolean equalsIgnoreCase(String str);     // 比较两个字符串的内容是否相等(忽略大小写)
 5           boolean startsWith(String subStr);       // 判断某个字符串是否以指定的子串开头
 6           boolean endsWith(String subStr):        // 判断某个字符串是否以指定的子串结尾
 7  
 8 第二组: 获取方法
 9           int length();                           // 获取字符串中字符个数
10           char charAt(int index);                      // 谋取字符串某一个字符(指定下标)
11           String subString(int startIndex);              // 从指定下标开始截取字符串,直到字符串末尾
12           String subString(int startIndex, int endIndex);     // 从指定下标开始截取字符串,到指定下标结束(左闭右开)
13           int indexOf(String subStr);                    // 获取子串第一次出现的下标
14   
15 第三组: 转换方法
16           String toLowerCase();    // 转成小写串
17           String toUpperCase();    // 转成大写串
18           Char[] toCharArray();    // 变成字符数组
19   
20 第四组: 其他方法
21           String trim();                     // 去掉字符串两端的空格
22           String[] split(String str);        // 切割字符串

使用代码如下:

 1 // String的API使用
 2 public class code2_useString {
 3     public static void main(String[] args) {
 4         String s1 = "ABC", s2 = "ABC", s3 = "abc";
 5         // equals equalsIgnoreCase
 6         System.out.println(s1.equals(s2) + " " + s1.equals(s3) + " "
 7                 + s1.equalsIgnoreCase(s3));
 8         // startsWith endsWith
 9         System.out.println(s1.startsWith("A") + " " + s1.endsWith("BC"));
10         System.out.println(s3.startsWith("A") + " " + s3.endsWith("BC"));
11         // length
12         System.out.println(s1.length());
13         // charAt
14         for (int i = 0; i < s1.length(); i++) {
15             if (i != s1.length() - 1) {
16                 System.out.print(s1.charAt(i) + "-");
17             } else{
18                 System.out.print(s1.charAt(i));
19             }    
20         }
21         System.out.println();
22         // subString
23         System.out.println(s1.substring(0));
24         System.out.println(s1.substring(0, 1));
25         System.out.println(s1.substring(1, 2));
26         // indexOf
27         System.out.println(s1.indexOf("BC"));
28         System.out.println(s1.indexOf("不存在"));
29         // toLowerCase toUpperCase toCharArray
30         System.out.println(s1.toLowerCase());
31         System.out.println(s3.toUpperCase());
32         char[] chas = s1.toCharArray();
33         // trim split
34         String str = "abc test 666";
35         System.out.println(str.trim());
36         String[] strs = str.split(" ");
37         for(int i=0;i<strs.length;i++){
38             System.out.print(strs[i] + " ");
39         }
40         System.out.println();
41     }
42 }

 

(2)数组

 1 // Java数组使用
 2 public class code3_useArray {
 3     // print all elements of array 
 4     public static void printArray(int[] arr) {
 5         if (arr == null) {
 6             return;
 7         }
 8         for (int i = 0; i < arr.length; i++) {
 9             System.out.print(arr[i] + " ");
10         }
11         System.out.println();
12     }
13     
14     // find the max value in arr 
15     public static int findMax(int[] arr){
16         int max = Integer.MIN_VALUE;
17         for(int i=0;i<arr.length;i++){
18             max = Math.max(max, arr[i]);
19         }
20         return max;
21     }
22     
23     // find the min value in arr
24     public static int findMin(int[] arr){
25         int min = Integer.MAX_VALUE;
26         for(int i=0;i<arr.length;i++){
27             min = Math.min(min, arr[i]);
28         }
29         return min;
30     }
31     
32     public static void main(String[] args) {
33         // 声明数组并初始化(如果声明的时候不初始化默认每个位置初始化为0)
34         int[] arr = { 1, 2, 3, 4, 5 };
35         // length
36         System.out.println(arr.length);
37         // 遍历数组
38         printArray(arr);
39         // 访问数组值
40         System.out.println(arr[0] + "-" + arr[1] + "-" + arr[2]);
41         // 找到数组最大值和最小值
42         System.out.println(findMax(arr));
43         System.out.println(findMin(arr));
44     }
45 }

 

(3)集合(ArrayList)(动态数组)

 1 // ArrayList使用
 2 public class code4_useArrayList {
 3     public static void main(String[] args) {
 4         // 创建ArrayList
 5         ArrayList list = new ArrayList();
 6 
 7         // 添加元素
 8         list.add("1");
 9         list.add("2");
10         list.add("3");
11         list.add("4");
12         // 将下面的元素添加到第1个位置
13         list.add(0, "5");
14 
15         // 获取第一个元素
16         System.out.println("the first element is: " + list.get(0));
17 
18         // 删除"3"
19         list.remove("3");
20 
21         // 获取大小
22         System.out.println("Arraylist size=: " + list.size());
23 
24         // 判断包含
25         System.out.println("ArrayList contains 3 is: " + list.contains("3"));
26 
27         // 设置第二个元素为10
28         list.set(1, "10");
29 
30         // 遍历ArrayList
31         for (Iterator iter = list.iterator(); iter.hasNext();) {
32             System.out.println("next is: " + iter.next());
33         }
34 
35         // 将ArrayList转换成数组
36         String[] arr = (String[]) list.toArray(new String[0]);
37         for (int i = 0; i < arr.length; i++) {
38             String str = arr[i];
39             System.out.println("str: " + str);
40         }
41 
42         // 清空ArrayList
43         list.clear();
44         // 判空
45         System.out.println("ArrayList is empty: " + list.isEmpty());
46     }
47 }

 

(4)Scanner(输入)

 1 // Scanner使用
 2 /*
 3     next():只读取输入直到空格。它不能读两个由空格或符号隔开的单词。
 4     此外,next()在读取输入后将光标放在同一行中。(next()只读空格之前的数据,并且光标指向本行)
 5 
 6     nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。
 7     读取输入后,nextLine()将光标定位在下一行。
 8  
 9  * */
10 public class code5_useScanner {
11     public static void main(String[] args) {
12         Scanner input = new Scanner(System.in);
13         System.out.println("a.请输入一个字符串(中间能加空格或符号)");
14         String a = input.nextLine();
15         
16         System.out.println("b.请输入一个字符串(中间不能加空格或符号)");
17         String b = input.next();
18         
19         System.out.println("c.请输入一个整数");
20         int c;
21         c = input.nextInt();
22         
23         System.out.println("d.请输入一个double类型的小数");
24         double d = input.nextDouble();
25         
26         System.out.println("e.请输入一个float类型的小数");
27         float e = input.nextFloat();
28         System.out.println("按顺序输出abcde的值:");
29         System.out.println(a);
30         System.out.println(b);
31         System.out.println(c);
32         System.out.println(d);
33         System.out.println(e);
34     }
35 }

 

 

3、IO流及读写文件

(1)什么是输入输出流

  • 输出流: 数据从Java程序到文件中
  • 输入流: 数据从文件到Java程序中

(2)FileWriter和FileReader

  • FileWriter:文件的字符输出流,写数据(字符、字符串、字符数组)
  • FileReader:文件的字符输入流,读数据(字符、字符数组)

两者API如下:

 1 FileWriter:
 2   write(int ch);                   // 写一个字符(可以写字符的ASCII码值)
 3   write(char[] chs);                 // 写一个字符数组
 4   write(String s);                  // 写一个字符串
 5   write(char[] chs,int startIndex,int len);   // 写一个字符数组的一部分
 6   write(String s,int startInex,int len);     // 写一个字符串的一部分
 7 
 8 FileReader:
 9   int read();          // 读取一个字符
10   int read(char[] chs);    // 一个读取一个字符数组,返回值表示实际读取到的字符的个数

 

(3)文件路径

  • 相对路径:相对于当前工程或当前项目
  • 绝对路径 :在计算机上的绝对位置(以盘符开头)

 

 

4、对象的内存图

(1)Java内存分类 

  • 栈stack:存基本数据类型和引用
  • 堆heap:存对象(new出来的)
  • 方法区:加载字节码文件(.class文件)
  • 本地方法区:Java调用操作系统功能
  • 寄存器区:Java操作CPU
  • 注:上述区域中本地方法区和寄存器区基本上平时用不到

 

(2)Java内存示意图

 

 

5、this的作用及本质

  • 作用:区分局部变量和成员变量的同名的情况(一般this.xxx就是指成员变量,没有this修饰的一般是局部变量)
  • 本质:this代表一个对象,具体是哪一个对象,那么由方法的调用者决定

 

 

6、匿名对象

(1)什么是匿名对象

匿名对象:指没有名字的对象

语法上:只创建对象,而不是变量来接收

比如:new Dog(); new Student();

 

(2)匿名对象的使用

  • 匿名对象也是一个对象,具有对象的所有功能
  • 一个匿名对象只能使用一次,第二次使用就是一个新的匿名对象
 1 public class Person{
 2     public void eat(){
 3         System.out.println();
 4     }
 5 }
 6 
 7 // 创建一个普通对象
 8 Person p = new Person();
 9 // 创建一个匿名对象
10 new Person();

 

(3)匿名对象的特点

  • 创建匿名对象直接使用,没有变量名:new Person().eat()
  • 匿名对象在没有指定其引用变量时,只能使用一次
  • 匿名对象可以作为方法接收的参数、方法返回值使用
 1 class Demo {
 2     publicstatic Person getPerson(){
 3         //普通方式
 4         //Person p = new Person();    
 5         //return p;
 6         
 7         //匿名对象作为方法返回值
 8         returnnew Person(); 
 9     }
10     
11     publicstaticvoid method(Person p){}
12 }
13 
14 class Test {
15     publicstaticvoid main(String[] args) {
16         //调用getPerson方法,得到一个Person对象
17         Person person = Demo.getPerson();
18         
19         //调用method方法
20         Demo.method(person);
21         //匿名对象作为方法接收的参数
22         Demo.method(new Person());
23     }
24 }

 

转载于:https://www.cnblogs.com/wyb666/p/10285463.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机部分应用显示模糊,win10系统打开部分软件字体总显示模糊的解决方法-电脑自学网...

win10系统打开部分软件字体总显示模糊的解决方法。方法一&#xff1a;win10软件字体模糊1、首先&#xff0c;在Win10的桌面点击鼠标右键&#xff0c;选择“显示设置”。2、在“显示设置”的界面下方&#xff0c;点击“高级显示设置”。3、在“高级显示设置”的界面中&#xff0…

Tomcat调节

Tomcat默认可以使用的内存为128MB&#xff0c;在较大型的应用项目中&#xff0c;这点内存是不够的&#xff0c;需要调大,并且Tomcat本身不能直接在计算机上运行&#xff0c;需要依赖于硬件基础之上的操作系统和一个java虚拟机。 AD&#xff1a; 这里向大家描述一下如何使用Tom…

turtle 20秒画完小猪佩奇“社会人”

转载&#xff1a;https://blog.csdn.net/csdnsevenn/article/details/80650456 图片源自网络 作者 丁彦军 如需转载&#xff0c;请联系原作者授权。 今年社交平台上最火的带货女王是谁&#xff1f;范冰冰&#xff1f;杨幂&#xff1f;Angelababy&#xff1f;不&#xff0c;是猪…

最佳子集aic选择_AutoML的起源:最佳子集选择

最佳子集aic选择As there is a lot of buzz about AutoML, I decided to write about the original AutoML; step-wise regression and best subset selection. Then I decided to ignore step-wise regression because it is bad and should probably stop being taught. That…

Java虚拟机内存溢出

最近在看周志明的《深入理解Java虚拟机》&#xff0c;虽然刚刚开始看&#xff0c;但是觉得还是一本不错的书。对于和我一样对于JVM了解不深&#xff0c;有志进一步了解的人算是一本不错的书。注明&#xff1a;不是书托&#xff0c;同样是华章出的书&#xff0c;质量要比《深入剖…

用户输入汉字时计算机首先将,用户输入汉字时,计算机首先将汉字的输入码转换为__________。...

用户的蓄的形能器常见式有。输入时计算机首先输入包括药物具有基的酚羟。汉字换物包腺皮括质激肾上素药。对既荷又有线有相间负负荷时&#xff0c;将汉倍作为等选取相负效三相负荷乘荷最大&#xff0c;将汉相负荷换荷应先将线间负算为&#xff0c;效三相负荷时在计算等&#xf…

从最终用户角度来看外部结构_从不同角度来看您最喜欢的游戏

从最终用户角度来看外部结构The complete python code and Exploratory Data Analysis Notebook are available at my github profile;完整的python代码和Exploratory Data Analysis Notebook可在我的github个人资料中找到 &#xff1b; Pokmon is a Japanese media franchise,…

apache+tomcat配置

无意间看到tomcat 6集群的内容&#xff0c;就尝试配置了一下&#xff0c;还是遇到很多问题&#xff0c;特此记录。apache服务器和tomcat的连接方法其实有三种:JK、http_proxy和ajp_proxy。本文主要介绍最为常见的JK。 环境&#xff1a;PC2台&#xff1a;pc1(IP 192.168.88.118…

记自己在spring中使用redis遇到的两个坑

本人在spring中使用redis作为缓存时&#xff0c;遇到两个坑&#xff0c;现在记录如下&#xff0c;算是作为自己的备忘吧&#xff0c;文笔不好&#xff0c;望大家见谅&#xff1b; 一、配置文件 1 <!-- 加载Properties文件 -->2 <bean id"configurer" cl…

Azure实践之如何批量为资源组虚拟机创建alert

通过上一篇的简介&#xff0c;相信各位对于简单的创建alert&#xff0c;以及Azure monitor使用以及大概有个印象了。基础的使用总是非常简单的&#xff0c;这里再分享一个常用的alert使用方法实际工作中&#xff0c;不管是日常运维还是做项目&#xff0c;我们都需要知道VM的实际…

管道过滤模式 大数据_大数据管道配方

管道过滤模式 大数据介绍 (Introduction) If you are starting with Big Data it is common to feel overwhelmed by the large number of tools, frameworks and options to choose from. In this article, I will try to summarize the ingredients and the basic recipe to …

DevOps时代,企业数字化转型需要强大的工具链

伴随时代的飞速进步&#xff0c;中国的人口红利带来了互联网业务的快速发展&#xff0c;巨大的流量也带动了技术的不断革新&#xff0c;研发的模式也在不断变化。传统企业纷纷效仿互联网的做法&#xff0c;结合DevOps进行数字化的转型。通常提到DevOps&#xff0c;大家浮现在脑…

用户体验可视化指南pdf_R中增强可视化的初学者指南

用户体验可视化指南pdfLearning to build complete visualizations in R is like any other data science skill, it’s a journey. RStudio’s ggplot2 is a useful package for telling data’s story, so if you are newer to ggplot2 and would love to develop your visua…

linux挂载磁盘阵列

linux挂载磁盘阵列 在许多项目中&#xff0c;都会把数据存放于磁盘阵列&#xff0c;以确保数据安全或者实现负载均衡。在初始安装数据库系统和数据恢复时&#xff0c;都需要先挂载磁盘阵列到系统中。本文记录一次在linux系统中挂载磁盘的操作步骤&#xff0c;以及注意事项。 此…

sql横着连接起来sql_SQL联接的简要介绍(到目前为止)

sql横着连接起来sqlSQL Join是什么意思&#xff1f; (What does a SQL Join mean?) A SQL join describes the process of merging rows in two different tables or files together.SQL连接描述了将两个不同表或文件中的行合并在一起的过程。 Rows of data are combined bas…

《Python》进程收尾线程初识

一、数据共享 from multiprocessing import Manager 把所有实现了数据共享的比较便捷的类都重新又封装了一遍&#xff0c;并且在原有的multiprocessing基础上增加了新的机制list、dict 机制&#xff1a;支持的数据类型非常有限 list、dict都不是数据安全的&#xff0c;需要自己…

北京修复宕机故障之旅

2012-12-18日 下午开会探讨北京项目出现的一些问题&#xff0c;当时记录的问题是由可能因为有一定数量的客户上来后&#xff0c;就造成了Web服务器宕机&#xff0c;而且没有任何时间上的规律性&#xff0c;让我准备出差到北京&#xff0c;限定三天时间&#xff0c;以及准备测试…

一般线性模型和混合线性模型_从零开始的线性混合模型

一般线性模型和混合线性模型生命科学的数学统计和机器学习 (Mathematical Statistics and Machine Learning for Life Sciences) This is the eighteenth article from the column Mathematical Statistics and Machine Learning for Life Sciences where I try to explain som…

《企业私有云建设指南》-导读

内容简介第1章总结性地介绍了云计算的参考架构、典型解决方案架构和涉及的关键技术。 第2章从需求分析入手&#xff0c;详细讲解了私有云的技术选型、资源管理、监控和运维。 第3章从计算、网络、存储资源池等方面讲解了私有云的规划和建设&#xff0c;以及私有云建设的总体原则…

太原冶金技师学院计算机系,山西冶金技师学院专业都有什么

山西冶金技师学院专业大全大家在考试之后对除了选择学校之外&#xff0c;还更关注专业的选择&#xff0c;山西冶金技师学院有哪些专业成了大家最为关心的问题。有些同学一般是选择好专业再选择自己满意的学校&#xff0c;下面小编将为你介绍山西冶金技师学院开设的专业及其哪些…