bcoder

Java的一些问题总结

 分类:Java 阅读 (618)  No Responses »
3月 162014
 

1. 整型数据类型中,需要内存空间最少的是(D)

A) short                B) long                 C) int                    D) byte

关于这个问题,我认为byte应该是字节型,就不算整型,怎么能选D呢。

2. Java中的default关键字 default关键字是Java8 的新特性,其作用是使用此关键字可以在接口中给接口函数增加默认的实现内容,以方便接口增加新的接口函数后继承自该接口的类也可以编译通过。如下代码:

3. Java中的native关键字 native用于定义本地方法,即方法的定义是在java中定义,但是其实现是用非java语言实现的

4. Java中的多态性——重载,重载函数不能同时有完全相同的参数(即参数数量和参数数据类型都一致),参数的数量可以与原来的不同,返回值也可以与原来的不同。

5. 子类覆盖父类方法时(注意:是覆盖不是重载),方法的作用域不能低于父类方法的作用域,比如父类用public声明的,子类中就不可以用private或者default声明,另附几个作用域关键字对应的作用范围

   类内部  本包  子类 外部包 
public         
protected        ×
default       ×  ×
 private    ×  ×  ×

6. 一个.java文件中,可以有多个类,但是只能有一个使用public定义的类

7. throw是在一个过程中抛出具体的某个异常(异常类的实例);throws是定义在方法头的可能会抛出的异常,可以同时定义多个异常类。

8. 参与运算时,数据类型会从低精度的数据类型向高精度自动转换

改变一下:

9. Java中基本数据类型包括byte、int、char、long、float、double、boolean和short

引用数据类型包括:类,数组,接口等(简单来说就是除了基本数据类型之外的所有类型),所以String也是引用类型的

10. Java中抽象类可以有实现方法,但是抽象类不能实例化,所以也无法调用实现方法,其他抽象类的特点

a. 抽象方法 abstract void f(); 抽象方法不能包含有任何方法的BODY 。
b. 如果一个类包含1个或者多个抽象方法, 则该类必须限定为抽象的。
需要在前面指定 abstract 关键字。
(1)抽象类不能被实例化
(2)包含抽象方法的类,必须标识 abstract
c. 如果从一个抽象类继承, 必须对所有抽象方法进行覆盖 , 否则导出类也是抽象的
d. 也可以考虑创建没有任何抽象方法的抽象类 。

11. 如果子类中没有显式调用父类的某个形式的构造函数,子类的构造函数会自动调用父类的无参数的构造函数,不管何种情况基类的无参构造函数肯定会被调用。

 Posted by on 2014-03-16
2月 142014
 

Windows下重新设置root用户密码的办法

第一步:停止mysql服务

打开命令行窗口,输入net stop mysql回车,或者在Windows服务管理器中停止MySQL服务。

第二步:在命令行窗口中将目录切换到mysqlbin目录,比如cd c:program filesmysqlbin

第三步:输入mysqld –skip-grant-tables,执行此命令后,此命令行窗口将会停止响应

第四步:再打开一个命令行窗口,因为上一个窗口已经无法响应了,将目录切换到mysqlbin目录中,输入mysql回车,这时将会进入mysql控制台,输入下面的命令

>use mysql;
>update user set password=password(“123456″) where user=”root”;
>flush privileges;
>exit

这样密码就被设置为123456了,注销计算机,重新启动mysql服务, 就可以使用这个密码登录了。

 

Linux下重新设置root密码的方法

如果 MySQL 正在运行,先杀掉这个进程: killall -TERM mysqld。
启动 MySQL :bin/safe_mysqld –skip-grant-tables &
就可以不需要密码就进入 MySQL 了。
然后就是
>use mysql
>update user set password=password(“new_pass”) where user=”root”;
>flush privileges;
重新杀 MySQL ,用正常方法启动

1月 062014
 

  在使用GridView时我们知道,列数是可以通过设计时的属性来设置的,列的宽度则是根据列数和GridView的宽度计算出来的。但是有些时候我们想实现列数是动态改变的效果,即列的宽度保持某个值,列的数量是可变的,我们可通过获取屏幕宽度并除以项目宽度来处理。请看下面的代码:

  但是由于不同的Android设备可能有不同的宽度,项目宽度乘以获得的列数所得到的总宽度并不能填充整个屏幕的宽度,而给用户带来不好的用户体验,甚至我们可能还需要使行高和列宽保持一定的比例,那么如何动态调整项目的宽度和高度呢?

  我们此处是通过写一个自己的Adapter类,并改写其中的getView函数来实现的,getView是用来返回某个GridView项的部局的函数,我们在此处手动生成需要的view并设置此view的宽度和高度,最后将此view返回。

  注:使用此方法时,项目中的内容可能也需要手动去填充,请再研究

  相关文件及代码如下:

  主窗体只有一个GridView,部局文件代码:

  GridView项所使用的部局文件只有一个TextView,命名为note_item,代码如下:

  Activity类的实现代码如下:

 

1月 012014
 

  1. 使用selector和图片设置Button的样式

  selector是一个设置view样式的集合,通过它可以对各种view的各种状态设置不同的样式。比如在此设置当按钮在正常或者按下状态或者获取焦点时的背景图片。话不多说,下面说说如何通过selector来实现。

  首先我们要准备几张图片,用以标示在按钮的不同状态。本人没有把全部状态的图片全部实现,只实现了正常、按下、获得焦点和不可用几个状态的,图片如下。用PS随便做的图片,显示效果可能不是太好,只是演示用。将几个图片拷到项目下的res->drawable目录中备用。

  有了图片后我们就可以写selector了,在项目->res->drawable上右键,选择菜单New->Other,在弹出的窗口中选择Android XML File,点击下一步,在Root Element列表中选择selector,File右边输入要创建文件的名字,我们这里就叫做graphic_button,点击完成按钮结束,这时我们就能在编辑器中看一个以<selector>节点为根节点的xml文件,现在我们可以为selector加item子节点了,下面把加好子节点的xml直接贴上来了。

  其中第一行,无任何状态的是正常状态下的背景图片

  • state_pressed是当按钮按下时,比如在屏幕上触摸该按钮时,要显示的背景图片。
  • state_focused是当按钮获得焦点时,按钮被高亮显示时,要显示的背景图片。
  • state_enabled其值为false是当按钮不可用时要显示的背景图片
  • state_selected当按钮是否为被选择状态时
  • state_checkable只有当按钮可以进行可选和不可选状态的切换时才会用到此状态
  • state_checked当按钮可选,并且按钮被选中或未选中时显示的背景图片
  • state_window_focused 是指当前所在的窗口是否有焦点时要显示的背景图片,比如弹出一个系统消息或者对话框时此窗口是没有焦点的。

  selector准备好了,我们可以设置按钮的背景样式了,不过先别急,为了更好的规划项目,我们还是为按钮创建一个样式来管理吧,打开项目->res->values->style.xml,在<resource>节点中加入如下xml片断

  好,现在我们可以来设置按钮的style属性了,打开部局文件,添加三个按钮,在每个按钮的Style属性中输入@style/GraphicButton,或者直接在部局的xml文件中加入该属性。XML片断如下

  运行程序,点点按钮我们就可以看到效果了。button的属性android:enabled=”false”,focused状态需要代码来实现,有时间的时候再完善一下本演示。

注意:

1. 一定要注意各个状态的顺序,见这篇文章

 

1月 012014
 

1. Java使用正则表达式检查Email地址的有效性

 

11月 232013
 

  在Windows Vista、 Windows7以上Windows系统中可以支持大图标显示了,但是Delphi编译出来的程序却只能显示32×32的图标,这使Delphi编译的程序看起来很不专业。下面就把Delphi编译大图标程序的方法分享一下。

  要想使用大图标编译,首先要准备一个256×256的图标图片。

  使用图标编辑软件,如IconWorkshop打开你的 ico文件,新建一个256×256的真彩色图标,将你的图片文件导入到该图标中。保存图标后,将图标文件拷贝到你的工程目录下,假设为mainico.ico,然后在你的工程下面建一个mainico.rc的文件,在里面输入文本:

  MAINICON ICON mainico.ico

  打开命令行窗口,将目录切换到你的工程目录下,输入命令rc mainico.rc,按回车执行,这时在你的工程目录下会生成一个mainico.RES文件。

  在Delphi中打开你的工程,选择菜单Project->View Source,在{$R *.res}下面加上一行{$R Mainico.RES},再编译程序就可以了。

  Windows系统会对图标缓存,所以刚编译完可能看不到效果,可以将编译后的程序拷贝到其他地方,看是否变成大图标了。

  rc命令为调用的Microsoft Windows Resource Compiler

 

11月 162013
 

  有的时候我们要实现一个悬浮窗口,并使该窗口一直显示在桌面的工作区内。即整个窗口要一直显示在屏幕上,不能超出屏幕的上下左右边缘。此功能的实现也不难,我们需要自己写代码来响应窗口的WM_WINDOWPOSCHANGING消息,话不多说,详细代码如下供参考:

  新建一个工程,并把下面代码拷贝到工程中,运行……

 

11月 072013
 

  假设我们有一个全局的数组对象,当我们点一下按钮时使数组当前索引加1,然后执行相应的操作,那么我们需要使用if语句来判断当前索引是否已经越界,如果越界则把当前索引置为0。如下所示

  那么不用if语句,我们也可以通过一个简单的运算来避免使用if语句,如下:

 

 Posted by on 2013-11-07
11月 062013
 

  在Delphi中下拉框条目的宽度总是和下拉框的宽度一样,当里面的项目太长时就不能显示全了。其实Windows提供了一个CB_SETDROPPEDWIDTH消息可能定义下拉框窗口的宽度,不知道为什么Delphi一直没有添加这个功能。使用方法很简单,如下:

  SendMessage(cboIndustry.Handle, CB_SETDROPPEDWIDTH, 200, 0);

  • 第一个参数是下拉框组件的句柄
  • 第二个参数是要发送的消息
  • 第三个参数是要设定的宽度
  • 第四个参数未使用
11月 022013
 

  我们知道,Delphi2010建立的工程,在Windows7或者Vista下编译后,界面效果都是标准的Windows7或者Vista效果。但是当我们把一个Delphi7的程序升级到Delphi2010后,编译的程序仍旧是比较老的效果。那么我们如何才能让升级的源码也使用Windows7的界面效果呢,具体操作步骤如下:

  在Delphi2010中打开工程,打开菜单Project->Options,选择树形菜单中的Application,将复合框Enable runtime themes选中,确定并重新编译就可以了。

  注意:

  1. 如果使用了UAC.res,那么即使做了上述操作,界面还是经典的windows窗口界面
 Posted by on 2013-11-02