JAVA学习笔记(1-32)
1:数据的输入中,也需要提前声明变量。java区分大小写,注意保留字的问题,注意分号。
2:用import调用一个类。用new新建一个对象,相当于c中的malloc。
3:用final定义一个宏,相当于#define PI 3.1415926 用final表示为:final double PI 3.1415926 注意:需要加入类型。
4:java中的单字节被 byte代替。
5:变量的赋值,以及数字的运算上没有变化。注意除法,5/9 = 0。
6:数字后面加相应的字母表示相应的类型,比如1.0f和1.0F表示float类型,1.0d和1.0D表示double类型。
7:自增自减和强制类型转换一样适用,注意强制类型转化的时候大的转换成小的必须显式的声明,大的转换小的可能丢失数据精度。
8:char ‘a’; 和 char “a”; 不一样的地方在与第一个声明a是一个字符,第二个声明a是一个字符串。
9:注意在java中,char 表示2个字节,只有byte表示1个字节。
10:java中char只能声明一个字符,要是声明字符串,我们需要String类型。并且我们可以给String 类型的字符串进行字符串的加法和减法操作。
11:注意命名规则:
变量名和方法:如果只有一个单词,则小写,如果有多个单词,则第一个单词小写,其余的单词每个首字母大写。
类名:类名中的每个单词首字母都应该大写。
还有一般大写字母中的单词之间常用下划线隔开。并且一般使用完整的单词更具有描述性。
12:next()方法用来读取以\n \f \t ’ ’ 结束的字符串。
13:Integer.parseInt : Integer中的parseInt方法将一个字符串转化成Int类型。
14:注意要是需要格式化输入输出的话,用System.out.printf(” %d”,s); 格式和printf的格式一致,但是注意如果需要输出一个%,那么应该%%。
15:两种产生随机数的方法:
(1):int number1 = (int)(System.currentTimeMillis() % 10); //函数本身返回一个long类型的,但是可以通过强制类型转化和求余的方法将数字控制在想要的范围。例子中就是将数字控制在了0到10之间。
(2):int number1 = (int)(Math.random() * 10); //Math.random()函数的返回值是一个双精度的值,0.0 <= d <= 1.0,我们的例子会返回一个从1到10的值。
16:int 类型和boolean之间不能相互强制类型转换:
boolean a = true;
int b = (int)a;
这样是错误的。
17:有关java的数组:我们需要首先声明一个类型:
c语言这样:int a[5];
java这样:int[] a = new int[5]; //new这个过程需要我们显式的指出来。那好,再顺便说说这个方式,我觉得这样声明数组更容易理解,就像我们声明变量一样,
int a = 5; int就是a的类型,现在int[] a = new int[5]; a数组的类型就是int[] ,是一个数组类型,后面我们再为它分配5个int的类型的空间。
18:java图形显示函数:JOptionPane.showInputDialog()中,第四个参数的意思是输入窗口之前的图标,有以下几个选项:
JOptionPane.INFORMATION_MESSAGE:一个字母i,表示信息。
JOptionPane.ERROR_MESSAGE :错误的小x
JOptionPane.PLAIN_MESSAGE:什么信息也没有
JOptionPane.WARNING_MESSAGE:一个三角形中一个”!”
19:不要用浮点数来设置标志位的循环,例如下面的代码,实际上就是一个无限循环,
double i = 1;
double sum = 0;
while(i != 0){
sum += i;
i -= 0.1;
}
System.out.println(sum);
因为i的值最后也只是近似的等于0,并不会实际等于0。
20:定义和声明不同,定义指的是定义的条目是声明,而声明会为被定义的条目分配内存。
21:java中的方法就是c语言中的函数,之所以叫方法,原因是c是面向过程的,java面向对象,假设我在add类下有main,和sum两种方法,除了main方法不能调用之外,其他的方法都是可以相互调用的,而且在别的类里面,我也可以通过add.sum来调用sum方法。
22:java中的重载方法,主要是针对方法名相同,但是参数不同的情况。针对参数不同的情况进行“精确”匹配。后面注意区分重载和覆盖的不同。
23:在for循环头中声明的变量的作用域是整个for循环。
24:产生随机数和随机字符的方法。(很实用)
25:java的数组需要我们显式的为其分配空间,例如:int[] array = new int[5]; 并且array的长度我们可以通过array.length得到。
java对于数组的遍历提供简单的方法:例如遍历array
for(int u:a)
{
System.out.print(u);
}
26:复制数组的方法有三种:
(1):使用循环语句逐个复制元素。
(2):使用System类中的静态方法arraycopy。 System.arraycopy(a,0,b,0,a.length); 表示把a从0号元素开始全部拷贝一份给b。
(3):使用clone方法复制。
27:java中数组和c语言本质上还是一样的,对于给方法中传递的数组,我们传进去的还是数组的引用,所以可以在方法中修改数组的值。但是变量是不可以的。
28:java可以把类型相同但是个数可变的参数传递给方法。
29:慢慢的,你得有一种方法或者你得有一种意识去让自己的程序通过各种方法变得容易让人理解和读懂。
30:查找方法:线性查找法和二分查找法。
线性查找法:依次遍历,找到返回,时间复杂度是O(n);
二分查找法:适合于已经排好序的情况,这样时间复杂度是O(log(n))
public static int binarySearch(int[] list,int key){
int low = 0;
int high = list.length - 1;
while(low <= high){
int middle = (high+low)/2;
if(key > list[middle]){
low = middle + 1;
}
else if (key == list[middle]){
return middle;
}
else{
high = middle - 1;
}
}
return -low-1;
}
31:几种常见的排序方法:
(1):选择排序:互换元素,每次得到目前最大或者最小的一个,时间复杂度O(n^2)
public static void selectSort(int[] list){
for (int i = 0; i <list.length ; i++) {
for (int j = i+1; j <list.length ; j++) {
if(list[i] < list[j]){
int temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}
(2):插入排序,每次反复得到一个元素,比较移动放到适合的位置。
public static void insertSort(int[] list){
for (int i = 1; i < list.length; i++) {
int current = list[i];
int k;
for ( k =i-1 ; k>=0 && list[k] > current ; k--) {
list[k+1] = list[k];
}
list[k+1] = current;
}
}
(3):桶排序,先初始化桶全为0,然后每读取一个数据就给相应的桶加1
public static int[] bumpSort(int[] list){
int[] bump = new int[10000];
for (int i = 0; i < list.length; i++) {
bump[list[i]]++;
}
return bump;
}
for (int i = 0; i < bump.length; i++) {
//for (int j = 1 ; bump[i] >= j ; j++) { //这个条件是不剔重复输出
//if(bump[i] >= 1){ //这个条件是剔重的输出
System.out.print(i+" ");
}
}
32:Arrays类:
在java中,为我们提供了一个Arrays类去处理我们的有关数组的排序和二分查找以及判断两个数组是否相等的方法,例如:
java.util.Arrays.sort(数组名); 可以对一个数组进行排序。
java.util.Arrays.sort(数组名,0,5); 对一个数组的0号元素到5号元素进行排序,
java.util.Arrays.binarySearch(数组名,’查找字符’); 对‘查找字符’元素在数组中进行二分查找。
java.util.Arrays.equals(数组名,数组名); 比较两个数组是否相同,相同返回true,不相同返回false。
版权声明:本文为博主原创文章,未经博主允许不得转载。
JAVA学习笔记(1-32)的更多相关文章
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记--Swing用户界面组件
很多与AWT类似. 事件处理参考:Java学习笔记--AWT事件处理 1.设计模式: 模型:存储内容视图:显示内容控制器:处理用户输入· 2. 文本输入常用组件 2.1 文本域: JLabel lab ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记01--数据类型
java学习笔记01--数据类型 java数据类型划分 分为两大类型: 1)基本数据类型:类似于普通的值. 2)引用数据类型:传递的是内存的地址. 浮点类型实际上就是表示小数. java基本数据类型 ...
- 20145231第二周Java学习笔记
20145231 <Java程序设计>第2周学习总结 教材学习内容总结 本周的学习采用的依然是先看课本,再看视频,然后实践敲代码,最后根据学习笔记总结完成博客. 第三章:基础语法 知识点比 ...
- Java学习笔记之---方法和数组
Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...
- Java学习笔记之---流程控制语句
Java学习笔记之---流程控制语句 (一)循环语句 (1)if语句 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } if(i%2!=0){ System.out.println( ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
随机推荐
- 【原创】刚刚发现的SVN的几个有用的功能
一.可看到一个文件/目录跨Branch的所有变更历程 二.SVN可自动利用Word2013的审阅功能对比docx文档
- C# FileSystemWatcher监听文件事件
现有一个需求如下:监控某个目录中的文件修改,创建,删除等信息,并记录下来. 这里用到FileSystemWatcher类.由于考虑到文件的写入量会很频率,所以考虑先将监听到的消息记录到内存中. 监听部 ...
- 在ASP.NET Web API中使用OData
http://www.alixixi.com/program/a/2015063094986.shtml 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在A ...
- javascript生成对象的三种方法
/** js生成对象的三种方法*/ // 1.通过new Object,然后添加属性 示例如下: var people1 = new Object(); people1.name = 'xiaohai ...
- C#如何利用QQ邮箱SMTP发送邮件
public void SendEmail() { MailMessage msg = new MailMessage(); msg.To.Add("to@qq.com");//收 ...
- 根据Request获取客户端IP 内网IP及外网IP
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...
- Javascript中变量提升的问题
一.函数声明变量提升 函数声明具有变量提升的问题,所以在函数被声明之前就可以访问. //else中的语句相当于将if中的function重写,因此无论flag为何值,返回的方法始终为重写后的方法. / ...
- HDU 2222 关键词查找
题目大意:给出一篇文章,长度最多1000000,若干个关键词,关键词有可能重复.关键词不超过10000,每个关键词不超过50个字符.请问该文章包含多少个关键词. 这是AC自动机的入门题.首先将关键词分 ...
- MariaDB Galera Cluster部署手册
MariaDB Galera Cluster部署手册 galara保证双主数据库的同步及一致性 1.环境准备 基于新部署.最小化安装centos6.5 1> yum install opens ...
- [platform]Device和Driver注册顺序
1. 设备和驱动注册,无论谁先谁后,都可以通过查询总线进行匹配 设备挂接到总线上时,与总线上的所有驱动进行匹配(用bus_type.match进行匹配),如果匹配成功,则调用bus_type.prob ...